内容正文:
山东省春季高考技能测试
C语言程序设计第十八套(答案版)
第 一 题 程序改错题
本题有3行代码错误,请考生找到错误代码行,将错误代码行号、修改后的该行程序代码填写到考试系统中对应的答题区域。
程序功能:自定义函数swap(),实现两个整数值互换,主函数中输入两个整数a和b,根据需要调用swap()函数,实现这两个数从大到小的顺序输出(变量输出顺序:先a后b),程序使用指针实现。
Program1.c代码(首行数字为行号)如下:
1 #include <stdio.h>
2 void swap(int p1,int p2)
3 {
4 int t;
5 t=*p1;
6 *p1=*p2;
7 *p2=t;
8 }
9 int main()
10 {
11 int a,b,*pa,*pb;
12 printf("请输入两个整数:");
13 scanf("%d%d",&a,&b);
14 pa=&a;
15 pb=&b;
16 if(a>b)
17 swap(pa,pb);
18 printf("两整数按从大到小顺序输出:%f,%f",a,b);
19 return 0;
20 }
答案:(满分18分)
【1】错误行号:2
正确代码:void swap(int *p1,int *p2)
【2】错误行号:16
正确代码:f(a < b)
【3】错误行号:18
正确代码:printf("两整数按从大到小顺序输出:%d,%d",a,b);
第 二 题 程序填空题
请考生将【序号】处所缺的多行程序代码填写到考试系统中对应的答题区域,实现程序功能。
程序功能:输入一行字符,对其进行加密,转换规则:按照26个英文字母顺序,将其中的大写字母变成其后的第4个字母,例'A'变成'E','W'变成'A',所有大写字母按上述现律转换,其它字符不变。
Program2.c代码如下:
#include <stdio.h>
int main()
{
char s[100];
int i;
gets(s);
for(i=0;s[i]!='\0';i++)
{
【1】
putchar(s[i]);
}
return 0;
}
答案:(满分18分)
if(s[i] >= 'A' && s[i] <= 'Z')
{
// 转换为其后第4个字母,超过'Z'则循环
s[i] = (s[i] - 'A' + 4) % 26 + 'A';
}
第 三 题 编程题
请考生将编写的程序代码填写到考试系统中对应的答题区域。
程序功能:从键盘输入车速、限定车速,根据输入值判定超速情况,输出超速处罚提示信息。处罚规则如下:(1)超速10%以内,不罚款,记3分;(2)超速10%未达20%的,罚50元,记3分;(3)超速20%未达50%的,罚200元,记6分;(4)超速50%及以上的,罚1000元,记12分。
答案:(满分28分)
程序代码:
#include <stdio.h>
int main() {
float speed, limit;
float overPercent; // 超速百分比
// 输入车速和限定车速
printf("请输入车速和限定车速(用空格分隔):");
scanf("%f %f", &speed, &limit);
// 计算超速百分比
overPercent = (speed - limit) / limit * 100;
// 根据超速比例判定处罚结果
if (overPercent <= 10 && overPercent > 0) {
printf("不罚款,记3分
");
} else if (overPercent > 10 && overPercent <= 20) {
printf("罚50元,记3分
");
} else if (overPercent > 20 && overPercent < 50) {
printf("罚200元,记6分
");
} else if (overPercent >= 50) {
printf("罚1000元,记12分
");
} else {
// 未超速或车速低于等于限定车速
printf("未超速,无处罚
");
}
return 0;
}
第 四 题 编程题
请考生将编写的程序代码填写到考试系统中对应的答题区域。
程序功能:自定义函数fun(),功能是判定给定整数n的各位数字之和是否等于10,主函数中调用该函数,输出10到1000范围内满足条件的所有数,输出数据的宽度为10位。
答案:(满分36分)
程序代码:
#include <stdio.h>
// 自定义函数:判断n的各位数字之和是否等于10
int fun(int n) {
int sum = 0;
int temp = n; // 用临时变量存储n,避免修改原数据
// 计算各位数字之和
while (temp > 0) {
sum += temp % 10; // 累加个位数字
temp /= 10; // 去除个位数字
}
// 判断和是否等于10
return (sum == 10) ? 1 : 0;
}
int main() {
int i;
printf("10到1000范围内各位数字之和等于10的数有:
");
// 遍历10到1000的范围,查找满足条件的数
for (i = 10; i <= 1000; i++) {
if (fun(i)) {
printf("%10d", i); // 输出宽度为10位
}
}
printf("
");
return 0;
}
5.综合素质(15分)
(1)考生全程无不当操作(如随意插拔设备、误触系统设置等)且能正确使用考试系统功能(如提交答案、标记题目等);5分
(2)按题目要求正确保存相关素材,规范答题;5分
(3)考生全程无任何违规行为(如交头接耳、携带违禁物品、偷看他人答案等);5分
【根据考生实际答题情况,即使无任何作答,只要参加考试并登录考试系统即有30分,因此大胆猜测软件专业技能考试数据库和C语言各有15分综合素质分,仅提供参考。阅卷时需按照卷面满分各科100分进行阅卷,阅卷结束后,根据需要自行补充30分综合素质分】
学科网(北京)股份有限公司原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$
山东省春季高考技能测试
C语言程序设计第十八套(原卷版)
第 一 题 程序改错题
本题有3行代码错误,请考生找到错误代码行,将错误代码行号、修改后的该行程序代码填写到考试系统中对应的答题区域。
程序功能:自定义函数swap(),实现两个整数值互换,主函数中输入两个整数a和b,根据需要调用swap()函数,实现这两个数从大到小的顺序输出(变量输出顺序:先a后b),程序使用指针实现。
Program1.c代码(首行数字为行号)如下:
1 #include <stdio.h>
2 void swap(int p1,int p2)
3 {
4 int t;
5 t=*p1;
6 *p1=*p2;
7 *p2=t;
8 }
9 int main()
10 {
11 int a,b,*pa,*pb;
12 printf("请输入两个整数:");
13 scanf("%d%d",&a,&b);
14 pa=&a;
15 pb=&b;
16 if(a>b)
17 swap(pa,pb);
18 printf("两整数按从大到小顺序输出:%f,%f",a,b);
19 return 0;
20 }
答案:
【1】错误行号:
正确代码:
【2】错误行号:
正确代码:
【3】错误行号:
正确代码:
第 二 题 程序填空题
请考生将【序号】处所缺的多行程序代码填写到考试系统中对应的答题区域,实现程序功能。
程序功能:输入一行字符,对其进行加密,转换规则:按照26个英文字母顺序,将其中的大写字母变成其后的第4个字母,例'A'变成'E','W'变成'A',所有大写字母按上述现律转换,其它字符不变。
Program2.c代码如下:
#include <stdio.h>
int main()
{
char s[100];
int i;
gets(s);
for(i=0;s[i]!='\0';i++)
{
【1】
putchar(s[i]);
}
return 0;
}
答案:
【1】
第 三 题 编程题
请考生将编写的程序代码填写到考试系统中对应的答题区域。
程序功能:从键盘输入车速、限定车速,根据输入值判定超速情况,输出超速处罚提示信息。处罚规则如下:(1)超速10%以内,不罚款,记3分;(2)超速10%未达20%的,罚50元,记3分;(3)超速20%未达50%的,罚200元,记6分;(4)超速50%及以上的,罚1000元,记12分。
答案:
程序代码:
第 四 题 编程题
请考生将编写的程序代码填写到考试系统中对应的答题区域。
程序功能:自定义函数fun(),功能是判定给定整数n的各位数字之和是否等于10,主函数中调用该函数,输出10到1000范围内满足条件的所有数,输出数据的宽度为10位。
答案:
程序代码:
学科网(北京)股份有限公司
学科网(北京)股份有限公司原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
/*程序功能:自定义函数swap(),实现两个整数值互换,主函数中输入两个整数a和b,根据需要调用swap()函数,
实现这两个数从大到小的顺序输出(变量输出顺序:先a后b),程序使用指针实现。
Program1.c代码(行首数字为行号)如下:*/
#include <stdio.h>
void swap(int p1,int p2)
{
int t;
t=*p1;
*p1=*p2;
*p2=t;
}
int main()
{
int a,b,*pa,*pb;
printf("请输入两个整数:");
scanf("%d%d",&a,&b);
pa=&a;
pb=&b;
if(a>b)
swap(pa,pb);
printf("两整数按从大到小顺序输出:%f,%f",a,b);
return 0;
}
/*程序功能:输入一行字符,对其进行加密,转换规则:按照26个英文字母顺序,将其中的大写字母
变成其后的第4个字母,例'A'变成'E','W'变成'A',所有大写字母按上述现律转换,其它字符不变.
Program2.c代码如下*/
#include <stdio.h>
int main()
{
char s[100];
int i;
gets(s);
for(i=0;s[i]!='\0';i++)
{
【1】
putchar(s[i]);
}
return 0;
}
$$