一:选择题
3-2.int x=2,y=3;,表达式x=(y==3)的值是( )。
A) 0 B) 1 C) 2 D) 3
4-1.下列语句中,不符合C语言语法的赋值语句是( )。
A) a=7+b+c=a+7; B) a=7+b++=a+7; C) a=7+b,b++,a+7; D) a=7=b,c=a+7;
注:a=7+b,b++,a+7;实为逗号语句,非赋值语句
5-3.float x; 要从键盘输入36.282给x,应选( )语句。
A)scanf("%5.3f",&x); B)scanf("%2.3f",&x);
C)scanf("%6.3f",&x); D)scanf("%6f",&x);
注:scanf后面没有(.nf的表达方式)
9-2.int a; 下列语句中,非死循环的是( )。
A) while(-1) { a++; } B) for(;(a=getchar())!='\n';);
C) for(;;a+=2); D) for(a=10;;a--);
注:省略了表达式二,在不做其它处理的时候将成为死循环,一个空表达式的值一般为非零。P99.
10-1.设已定义char s[]="\"Name\\Address\023\n";,则字符串所占的字节数是( )。
A) 19 B) 16 C) 18 D) 14
注:'\023’,即ASCII码值为八进制23的字符;
'\n’即回车符。
strlen(s)为15(不算'\0');算上'\0',所占的字节数是16
11-1.以下程序段的运行结果是( )。
main()
{ int i=4,j;
j=i;
pic(i+2*j-2,'*');
putchar('\n');
for(j- =2; j>=0; j--)
{ pic(3-j, ' ');
pic(i+2*j,'*');
putchar('\n');
}
}
pic(int len,char c)
{ int k;
for(k=1;k<=len;k++) putchar(c);
}
D) **********
********
******
****
C) ****
******
********
B) **********
**********
**********
**********
A) *
***
*****
*******
注:
j | 4 | 2 | 1 | 0 | -1 |
输出 | 10enum c++个* 回车换行 | 1个空格 8个* 回车换行 | 2个空格 6个* 回车换行 | 3个空格 4个* 回车换行 | |
11-2. 以下程序运行结果是( )。
main()
{ char a[ ][5]={"ABCD","1234","abcd","5678","EFGH"};
int i;
for(i=0;i<3;i++) printf("%s",a[i]);
}
A)Ala B)ABCD1234abcd C)ABC D)ABCD1234abcd5678EFGH
12-2.以下程序第一个printf ()的运行结果是ffd6,第二个printf () 的运行结果是( )。
main()
{ char ch[]="I am student!", *p;
p=ch;
printf("%x\n",p);
printf("%x\n",p+9);
}
A) ffdf B) ffe8 C) ffd6 D) ffcf
15-3.设有下列语句,且0≤i<5,则不能访问a数组元素的是( )。
int a[5]={0,1,2,3,4,5},i;
int *p=a;
A) *(*(a+i)) B) *(&a[i]) C) a[p-a] D) p[i]
16-2.设有下列语句,则不能访问a数组元素a[1][2]的是( )。
int (*p)[3];
int a[][3]={1,2,3,4,5,6,7,8,9};
p=a;
A) *(*(a+1)+2) B) p[1][2] C) (*(p+1))[2] D) p[1]+2
17-2.以下程序的输出结果是( )。
main()
{union u_type
{int i;
double x;
float f;
};
struct str_type
{char str[100];
union u_type u[2];
};
printf("%d\n",sizeof(struct str_type));
}
A) 100 B) 116 C) 120 D)200
19-3. 以下对枚举类型进行定义,不正确的是( )。
A)enum b{1,2,2}; B)enum a{A,B, C};
C)enum c{D=3,E,F}; D)enum d{X=0,Y=5,Z=9};
20-1.以下程序的功能是( )。
#include <stdio.h>
main()
{ FILE *fp;
long int n;
fp=fopen("wj.txt","rb");
fseek(fp,0,SEEK_END);
n=ftell(fp);
fclose(fp);
printf("%ld",n);
}
A) 计算文件wj.txt的起始地址 B) 计算文件wj.txt的终止地址
C) 计算文件wj.txt的长度 D) 将文件指针定位到文件末尾
20-2. 标准函数fgets(s, n, f)的功能是( )。
A)从文件f中读取长度为n的字符串存入指针s所指的内存
B)从文件f中读取长度不超过n-1的字符串存入指针s所指的内存
C)从文件f中读取n个字符串存入指针s所指的内存
D)从文件f中读取长度为n-1的字符串存入指针s所指的内存
二:改错、编程、填空
1-1.(Cmody011.C)
从键盘输入大小不同的两个正整数,由小到大输出其间所包含的奇数。
如输入11,3, 输出5 7 9
#include <stdio.h>
#include <conio.h>
void main()
{
int a,b,temp;
scanf("%d,%d",&a,&b);
/**/if (a>b) /**/
{
temp=a; a=b; b=temp;
}
while(++a<b)
{
if(a%2==0)
/**/ continue; /**/
printf("%d ",a);
}
printf("\n");
getch();
}
|x|-2
1-2 计算f(x)=---------
x2+1
#include <stdio.h>
#include <math.h>
void main()
{
int x;
/**/ double f; /**/ 或 float f;
printf("Input an integer: ");
scanf("%d",&x);
f = /**/ (fabs(x)-2)/(x*x+1) /**/ ; /* 或(abs(x)-2.0)/(x*x+1) */
printf("F(x)=%f\n",f);
getch();
}
2-2.(Cprog012.C)
完成函数fun2(int a[],int n,int b[],int c[]),实现:
1)将数组a中大于-20的元素,依次存放到数组b中;
2)将数组b中的元素按从大到小的顺序存放到数组c中;
3)函数返回数组b中的元素个数。
#include <string.h>
#include <conio.h>
#include <math.h>
#include <stdio.h>
int fun2(int a[],int n,int b[],int c[])
{
/**/
int i, j, m=0, max_at, temp;
for(i=0;i<=n-1;i++) /* 数组a共n个数, 大于-20的元素依次复制到数组b */
if (a[i]>-20) {b[m]=a[i]; m++;}
for(i=0;i<=m-1;i++) /* 数组b共m个数,逐一复制到数组c */
c[i]=b[i];
/*或对c冒泡排序*/
for(i=m-1;i>=1;i--)
for(j=0;j<=i-1;j++)
if(c[j]<c[j+1])
{temp=c[j];c[j]=c[j+1]; c[j+1]=temp; }
for(i=0;i<=m-2;i++) /* 对c选择排序 */ { max_at=i;
for(j=i+1;j<=m-1;j++)
if(c[j]>c[max_at]) max_at=j;
if(max_at!= i)
{temp=c[i]; c[i]=c[max_at]; c[max_at]=temp; }
/*或对c直接交换排序*/
for(i=0;i<=m-2;i++)
for(j=i+1;j<=m-1;j++)
if(c[i]<c[j])
{temp=c[i];c[i]=c[j];c[j]=temp; }
} return m;
/**/
}
void main()
{ int n = 10, i, nb;
int aa[10] = {12, -10, -31, -18, -15, 50, 17, 15, -20, 20};
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论