A) auto B) register C) static D) extern
29.未指定存储类别的变量,其隐含的存储类别为( A )。 A)auto B)static C)extern D)register 30. 若有以下说明语句: struct student { int num; char name[ ]; float score; }stu;
则下面的叙述不正确的是: ( D )
A. struct是结构体类型的关键字
B. struct student 是用户定义的结构体类型 C. num, score都是结构体成员名 D. stu是用户定义的结构体类型名 31.若有以下说明语句: struct date { int year; int month; int day; }brithday;
则下面的叙述不正确的是__C___.
A) struct是声明结构体类型时用的关键字 B) struct date 是用户定义的结构体类型名 C) brithday是用户定义的结构体类型名 D) year,day 都是结构体成员名
32. 以下对结构变量stul中成员age的非法引用是 B struct student { int age; int num; }stu1,*p; p=&stu1;
A) stu1.age B) student.age C) p->age D) (*p).age 33.设有如下定义:
struck sk { int a;
习题
float b; }data; int *p;
若要使P指向data中的a域,正确的赋值语句是 C A) p=&a;
B) p=data.a; C) p=&data.a; D)*p=data.a;
34.设有以下说明语句:
typedef struct stu { int a; float b; } stutype;
则下面叙述中错误的是( D )。 A、struct是结构类型的关键字
B、struct stu是用户定义的结构类型 C、a和b都是结构成员名
D、stutype是用户定义的结构体变量名 41. 在C语言中,以 D 作为字符串结束标志
A)’\\n’ B)’ ’ C) ’0’ D)’\\0’ 42.下列数据中属于“字符串常量”的是( A )。
A.“a” B.{ABC} C.‘abc\\0’ D.‘a’ 若干个字符构成字符串
在C语言中,用单引号标识字符;用双引号标识字符串 选项B,C,分别用{}和’’标识字符串 选项D,标识字符。
43.已知char x[]=\则关于两个数组长度的正确描述是
B .
A)相同 B)x大于y C)x小于y D)以上答案都不对
C语言中,字符串后面需要一个结束标志位'\\0',通常系统会自动添加。
对一维数组初始化时可采用字符串的形式(例如本题数组x),也可采用字符集合的形式(例如本题数组y)。在以字符串形式初始化时,数组x不尽要存储字符串中的字符,还要存储字符串后的结束标志位,因此数组x的长度为6;在以字符集合形式初始化时,数组y,仅存储集合中的元素,因此数组y长度为5
习题
4.编程计算1+3+5…+99的值
main()
{ int i, sum = 0;
i=1;
while ( i<100 )
{ sum = sum + i;
I=i+2 ; } printf(\}
5.从键盘输入一个字符,判断它是否是英文字母。 #include
printf(\ c=getchar();
if(c>= ‘A’ &&c<= ‘Z’ || c>=‘a’ &&c<= ‘z’) printf(\\\n\ else printf(\}
6. 下面程序的功能是在a数组中查找与x值相同的元素所在位置,请填空。 #include
printf(“input 10 integers:”); for(i=0;i<10;i++)
scanf(“%d”,&a[i]);
printf(“input the number you want to find x:”);
scanf(“%d”, &x );
for(i=0;i<10;i++)
if( x==a[i] ) break;
if( i<10 )
printf(“the pos of x is:%d\\n”,i);
else printf(“can not find x!\\n”);
习题
}
7.程序读入20个整数,统计非负数个数,并计算非负数之和。 #include
{ int i, a[20], s, count; s=count=0;
for(i=0; i<20; i++) scanf(“%d”, &a[i] ); for(i=0; i<20; i++)
{ if( a[i]<0 ) continue ; s+=a[i] ; count++; }
printf(“s=%d\\t count=%d\\n”, s, count”); }
8. 输入一个正整数n (1 #include int i, index, k, n, temp; /* 定义1个数组a,它有10个整型元素*/ printf(“Enter n: \ printf(“Enter %d integers: \ n); for(i = 0; i < n; i++) scanf(\ for(k = 0; k < n-1; k++){ /* 对n个数排序 */ index = k; for( ) if( ) index = i; } printf(\ for(i = 0; i < n; i++) /* 输出n个数组元素的值 */ return 0;} 习题 一、 程序改错 一、 下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果。 1.求1?2?3?4???n main() { long int sum; / /若定义变量的语句有错误,常见考点有两个:(1)变量的类型,(2)在定义用于存放运算结果的变量时,一定要赋初值。一般赋值0或者循环初值。 int n,i=1; scanf(\//若scanf语句有错误,常见考点有两个:(1)格式声明符号要与后面 欲赋值的变量的类型一致,此题%d与n的类型int一致(详见p69-78);(2)变量的前面要有地址符号& printf(“\\n”); while(i 终值为n-1, 由于且i初值为1,因此一共能够循环n-1次。比要求少了1次,因此应改为i<=n 或者i { sum=sum*i; // 若不为sum赋初值,则此处无法计算sum*i。 i++; } printf(\ //若printf语句有错误,常见考点有1个:格式声明符号要与 后面欲输出的变量的类型一致,此题%d与sum的类型long int不一致,应改为%ld(详见p69-78); } sum应初始化 即加入sum=1 第四行改为:scanf(“%d”,&n); 第六行改为:while(i<=n)或者 while(i 2.求一个数组中最大值及其下标。 main( ) { int max,j,m; int a[5]; for(j=1;j<=5;j++) // j=1为循环变量j赋初值为1,同时用j作为数字元素的逻辑 地址下标。因此输出的时候只能从a[1]开始输出,无法输出a[0].因此应将j赋初值0,相应的循环条件改为j<5或者j<=4用于控制循环执行5次 scanf(“%d”,a); //若scanf语句有错误,常见考点有两个:(1)格式声明符号要与 后面欲赋值的变量的类型一致,此题%d与a的类型int一致(详见p69-78);(2)变量的前面要有地址符号& max=a[0]; for(j=1;j<=5;j++) //修改思路与上一个for语句同 if(ma 下标存 在 习题