套题2 C语言程序设计 答案

  • 格式:pdf
  • 大小:222.63 KB
  • 文档页数:13

main( ) { char s[100]; char c, i; scanf("%c", &c); scanf("%d", &i); scanf("%s", s); printf("%d,%c,%s\n", c, i, s); }
5.位式运算符是 C 语言作为中级语言的体现,可以实现以二进制 比特位为单位的操作,其中 “&” 是“位式与运算符” ,有如下
5
班级:
学号:
姓名:
}
for(i=0;i<n;i++) { scanf(" %d",p+i); } sum=0 ; for(i=0;i<n;i++) { sum=sum+*(p+i) } printf(" aver=%d\n" ,sum/n); free(p);
;
2. 输入一个字符数小于 100 的字符串 string,然后在 string 所保存 字符串中的每个字符间加一个空格。
4.下面程序片段的执行结果是: #define MAX 10 int a[MAX], i;
第 1 页(共 6 页)
班级:
学号:
姓名:
main( ) { printf("\n"); sub1( ); sub3(a); sub2( ); sub3(a); } sub2( ) { int a[MAX], i, max=5; for(i=0; i<max; i++) a[i]=i; } sub1( ) { for(i=0; i<MAX; i++) a[i]=i+i; } sub3(int a[ ]) { int i; for(i=0; i<MAX; i++)printf("%d",a[i]); printf("\n"); }
程序运行结果是:
x=8
2.
#include <stdio.h>
struct STU { char num[10]; float score[3]; }; main() { struct STU s[3]={{"20021",90,95,85}, {"20022",95,80,75}, {"20023",100,95,90}}, *p=s; int i; float sum = 0; for (i=0; i<3; i++) {
4. #include <stdio.h> int a=13, b=8; int max(int a, int b) { int c; c=a>b?a: b; return(c); } main( ) { int a=5; printf("Max=%d\n", max(a, b)); } 程序运行结果是: Max=8
试 题 二
参 考答 案与 评分 标 准
一、单项选择题: (10 分,每题 2 分,评分标准:正确得 2 分,错 误扣 2 分)
1. 以下不能对二维数组 a 进行正确初始化的语句是 A)int a[2] [3]={0}; B)int a[] [3]={{1,2},{0}}; √C)int a[2] [3]={{1,2},{3,4},{5,6}}; D)int a[] [3]={1,2,3,4,5,6}; 2.有以下程序片断 float fun(int x,int y) { } return(x+y);
0 2 4 6 8 10 12 14 16 18 0 1 2 3 4 10 12 14 16 18 B) 0 1 2 3 4 0 2 4 6 8 10 12 14 16 18 C) 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 √D) 0 2 4 6 8 10 12 14 16 18 0 2 4 6 8 10 12 14 16 18
学写出下列程序的运行结果。(10 分,评分标准:正确得 2 分, 完全错误扣 2 分,如果部分错误,少一行或者多了一行,或者其 他提示信息,则扣 1 分) 1.
main() { int i,j,x =0; for(i=0;i<2;i++) { X++; for(j=0;j<3;j++) { if(j%2) continue; X++; } X++; } printf(" x=%d\n" ,x); }
#include <stdio.h> #include <stdlib.h> main() { int *p=NULL,n,i,sum; printf(" please enter array size: "); scanf(" %d" , &n ); p=(int *)malloc(n* sizeof(int)); if (p==NULL) { printf(" no enough memory!\n"); exit(0); //或者 return ; } printf(" please enter the score: " );
main(){
int a=2,b=5,c=8;
} 程序运行后的输出结果是: A)编译出错 √B)9 C)21 D)9.0
printf("%3.0f\n",fun((int)fun(a+c,b),a-c));
3.若有以下调用语句,则不正确的 fun 函数的函数原型是 main() { … int a[50],n; … fun(n, &a[9]); … } ); A)void fun(int m, int x[] B)void fun(int s, int h[41]); C)void fun(int p, int *s); √D)void fun(int n, int a);
} int MaxCommonFactor(int a, int b) ; { int r; do{ r = a = b = }while return a % b; b; r; (r != 0); a;
}
2.从键盘输入 10 个整型数据,放入数组 a 中,求其最大值、最 小值及其所在元素的下标位置,并输出。
3
班级:
学号:
姓名:
}
sum = sum + p->score[i]; } printf("%6.2f\n",sum);
程序的运行结果是: 270.00 3.
#include <stdio.h>
已知字符’a’的 ASCII 码值为 97, 那么当程序输入: a<空格>97< 空格>123<回车>,程序运行结果是: 97 a 123
6
班级:
学号: j++; srcStr[i] = ' '; i++;
姓名:
四、在下面给出的 4 个程序中,共有 16 处错误(包括语
}
} srcStr[i] = '\0';
法错误和逻辑错误) , 请找出其中的错误, 并改正之。 (30 分,每找对 1 个错误,加 1 分,每修改正确 1 个错误, 再加 1 分。只要找对 15 个即可,多找不加分。 )
1.设计一个函数 MaxCommonFactor(),利用欧几里德算法,即称 辗转相除法计算两个正整数的最大公约数。
#include <stdio.h> int MaxCommonFactor(int a, int b); main() { int a, b, x; printf("Input a,b:"); scanf("%d,%d",&a,&b); x = MaxCommonFactor(a,b); printf("MaxCommonFactor = %d\n", x);
#include<stdio.h> #define MAX 100 void CopyString(char c[],char s[]); void Insert(char s[]); main() { char string[MAX]; scanf("%s",string); Insert(string); printf("%s",string); } void CopyString(char c[], char s[]) { int i; for (i=0; s[i]!='\0'; i++) { c[i] = s[i]; } c[i] = '\0'; } void Insert(char srcStr[]) { char strTemp[MAX]; int i = 0, j = 0; CopyString(strTemp, srcStr); while (strTemp[j] != '\0') { srcStr[i] = strTemp[j]; i++;
#include <stdio.h> main() { int a[10], n, max, min, maxPos, minPos; for (n=0; n<10; n++) { scanf("%d", &a[n]); }
7
班级:
学号: max = min = a[0];
姓名: //应初始化为数组中的某一元素
4
班级:
学号: