分类题_复习题分类
分类题由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“复习题分类”。
分类题
基础概念
一、数据存储、位运算
1、将二进制10001101分别转化为十六进制和十进制数。
2、分别计算八进制165的十进制值和十进制165的十六进制值。
3、已知变量 int a =-1;则 printf(“%d,%u,%x,%o”,a,a,a,a);的输出为:
A.–1,-1,-1,-1
B.–1,65535,-1,-1 C.–1,65535,ffff,177777 D.–1,65535,-ffff,-1777774、计算表达式的值:(~3 ^-15)。
二、表达式
sin(ab)
1、写出数学式 2x3 的C语言表达式
2、试写出逻辑判断“条件x的值大于100和y的值小于100,要么同时成立要么同时不成立”对应的C表达式。
3、写出逻辑表达式:正整数n是一个三位数。
4、用一个表达式描述下列命题
1)a小于b或小于c 2)a和b都小于c 3)a和b中有一个小于c5、写出算术表达式:实数x四舍五入为整数。
6、写出算术表达式:实数x小数点后第三位四舍五入。
7、定义char ch;已知ch为一大写字符,试写表达式将ch转换为小写字符。
8、请写出表达式:将整数n(0≤n≤9)转化为ASCII字符。
9、已知某个月的1日为星期六,该月有n天,试写出表达式计算该月所跨的周数(从星期日至星期六为一周,如n=30时为6周)。
三、求表达式的值
1、写出下列表达式的值
1)3
2、已知 int a = 5, b = 8;求表达式 ++a / 2 + b--的值。
3、已知 float x=3.763,y;计算 y=(int)(100*x+0.5)/100.0;的值。
4、计算表达式的值:(float)15/(int)2.5。
四、写结果
1、执行下面语句後,输出什么结果?
int x, y, z, w;x=y=z=-1;w=++x&&++y||++z;printf(“x=%d, y=%d, z=%d, w=%d”, x, y, z, w);
2、已知 int a=1,b=2,c=3,x;则执行x =(a+=2)&&(--b)&&(c=0);后计算x、a、b、c的值。
五、计算字符串长度
1、分别计算字符串的长度:“Computer”与“abc123 mop”。
2、分别计算字符串的长度:“Shanghai”与“C: est.txt”。
3、执行下列语句,写出输出结果。(strlen()是一个求字符串长度的库函数)
printf(“%d”, strlen(“abc123 mop”));
六、指针
1、定义char *pc[]={ “Shanghai”, “Beijing”, “Guangzhou” };写出语句片段:输出pc数组中的所有字符串,每字符串一行。
2、已知 int a[10],*p=a;计算表达式(&a[8]-&p[2])的值。
七、输入输出
1、已知有语句 scanf(“%d%d”,&a,&b);要使整型变量 a = 6, b = 8,运行时,屏幕上应输入:
A.a=6,b=8 B.a=6 b=8 C.6,8 D.6 82、已知变量 float x=1.2, y=-23.41;int z=345;要使输出为 x=1.20,y=-23.4,z=345,(中间无空格),则应使用语句 printf(“____”, x, y, z);
3、定义struct student {int num;char name[20];} stu[3];试用scanf写出语句: 输入下标i对应的num与name信息。
4、定义char *p[10];试用puts写出语句:输出数组中下标i对应的字符串。
5、定义int a[10];写出语句片段:输入a数组中的10个整数。
八、结构体
1. 已知有职工结构体数组:struct { int num;char name[20];} per[100];请使用scanf函数写出:输入下标为i的职工的num和name的语句。
2.写出一个结构体类型定义:结构体名为stuinfo,成员num为整型,成员score为实型。3.已知 struct fs { int fz;int fm;} x[]={{2,7}, {4,9}};计算表达式 x[0].fz*x[1].fm+x[1].fz*x[0].fm和x[0].fm*x[1].fm的值。
九、定义
1、有定义语句int *p(int a);说明其含义。
2、已知有函数定义:struct worker *findw(struct worker per[],int n);则关于函数返回值,请选出以下正确的描述。
A、返回值是一个结构体 B、返回值是一个结构体指针 C、返回值是一个整型数组 D、返回值是一个函数指针
3、(多选)以下变量命名中,哪些是合法的?
A.I B.long C.INT D.6K E.K6 F.xY_04、写出定义语句,定义一个双精度函数指针f指向sin函数。
5、试写出一个结构体定义:结构体名称为student,分量num为整型,分量name为字符数组,数组有10个元素。
6、试写一条函数说明语句:函数名为func,形式参数a为一维整型数组,返回类型为整型指针。
7、写出一个单链表结点的结构体类型定义:结点名为worker,分量num为整型,分量next为指向下一结点的指针。
十、其他
1、已知有如下形式的程序段:for(________)printf(“%d ”, i);执行后要输出 1 2 3 4,试写出完整的for短句。
2、请简要描述循环体中break 语句和 continue 语句的主要区别。
3、已知定义int a[]={10, 60, 30};写出语句a[0]+=a[1]-=a[2];运行后数组的值。阅读程序
一、条件选择
程序1 #include
main()
{
int m, n;
scanf(“%d%d”, &m, &n);
printf(“Result is:n”);
if(m%2==0)printf(“%d is evenn”, m);
else printf(“%d is oddn”, m);
if(n%2==0)printf(“%d is evenn”, n);
else printf(“%d is oddn”, n);
} 输入:8 9 输出: ? 程序2 main(){ int n;
scanf(“%d”, &n);
if(n >=0 && n
printf(“%d is 1-digitn”, n);
else if(n >=10 && n
printf(“%d is 2-digitn”, n);
else
printf(“%d is unknownn”, n);} 输入:80 输出:?
程序3 main(){ int m,n;
char op;
scanf(“%d%c%d”, &m, &op, &n);
switch(op)
{ case „+‟:
printf(“%d+%d=%dn”,m,n,m+n);
break;
case „*‟:
printf(“%d*%d=%dn”,m,n,m*n);
break;
} } 输入:15+8 输出:?
二、循环:
程序1 # include main(){
int i, s=0, n=0;for(i=1;i
n++;
s+=i;} printf(“n=%d, s=%dn”, n, s);} 输出:?
程序2 #include main(){ int n, i, j;scanf(“%d”, &n);
for(i = 0;i
printf(“ ”);
for(j = 0;j
printf(“*”);
printf(“n”);} } 输入:3 输出:?
程序3 main(){ int i, j, k;
for(i = 1;i
for(j = 1;j
for(k = 1;k
if((i!=j)&&(i!=k)&&(j!=k))
printf(“%d %d %dn”, i, j, k);} 输出:?
三、数组
程序1 main(){ int i, j, a[5]={10, 20, 30, 20, 10};for(i=0;i
程序2
main()
{
char a[10]=“ABCD”, b[10]=“12345678”;
int i, j=1;
for(i=3;b[i-1]!=' ';i++)
a[i]=b[i-1];
a[--i]=' ';
printf(“ Result [1] ”);
puts(a);
while(a[j++]!= ' ')
b[j]=a[j];
printf(“ Result [2] ”);
puts(b);
} 输出 ? 程序3 #include main(){
int i, j;for(i = 0;i
for(j = 0;j
printf(“%d ”,(i+j)%3 + 1);
printf(“n”);} } 输出: ?
四、函数
程序1
# include int gcd(int, int);main(){
int a, b;scanf(“%d, %d”, &a, &b);
printf(“a=%d, b=%d, gcd=%dn”, a, b, gcd(a,b));} int gcd(int x, int y){
int r;
r=x%y;
if(r==0)return y;
return gcd(y, r);} 输入: 15,9 输出:?程序2
double func4(double d, int n){ return(n ? d*func4(d, n-1): 1.0);} main(){ double x, w;int n;
x = 6.0;
w = func4(x, 4);
printf(“x= %lf ”, x);
printf(“w= %lfn”, w);} 输出?
程序3
#include void conv(int m){ if(m >= 2)
conv(m/2);printf(“%d”, m/2);} main(){ conv(13);} 输出:?
五、静态存储
程序1
# include void fun(void);void main(){
int i;for(i=0;i
static int i=10;i+=2;printf(“i=%d”, i);}
输出:?
程序2 #include Int vtest(int n){ static int x = 100;int y = 200;return n+(x++)+(y++);} main(){ printf(“%dn”, vtest(10));printf(“%dn”, vtest(20));} 输出 ?
六、预处理
程序1 #include ADD(x)x+x main(){
int m=1, n=2, k=3;
int sum = ADD(m+n)* k;
printf(“sum=%d”,sum);} 输出 ?
七、指针
程序1 #include main(){
int a[] = { 0,10,20,30 };int n=0, *p;p = a + 1;n += *(p++);n +=(*p)++;n += *(++p);n += ++(*p);printf(“n=%d,a[]=%d,%d,%d,%dn”, n,a[0],a[1],a[2],a[3]);} 输出 ? 程序 2 #include main(){
int a[]={10,11,12,13,14}, *p, n;p=&a[0];n=*(p++);n+=*(++p);n+=(*(p+=2))++;n-=(*(--p))--;n-=*(--p-1);printf(“n=%dn”,n);printf(“a[2]=%d,a[3]=%d,a[4]=%dn”,a[2],a[3],a[4]);} 输出:?
八、结构体
程序1 struct worker { int num;char name[20];};main(){ struct worker per[10], t;int n,i,j;scanf(“%d”, &n);for(i = 0;i 0){ t = per[j];per[j] = per[j+1];per[j+1] = t;} for(i = 0;i
程序改错
1、以下程序输入一行字符,判断其是否对称,是则输出Yes,否则输出No。
#include
#include
main()/*1*/ { char a[80];int n, i;/*2*/ gets(a[80]);/*3*/ n = strlen(a);/*4*/ for(i = 0;i
if(a[i]!= a[n-1-i])/*6*/
continue;/*7*/ if(i
printf(“Non”);/*9*/ else /*10*/ printf(“Yesn”);
}
2、以下程序输入10个数,输出其中只出现一次的数。
main(){ int a[10], i, j, k;/* 1*/ for(i = 0;i
if(a[i] == a[j])/* 8*/
k ++;/* 9*/ if(k == 1)/*10*/
printf(“%d ”, a[j]);/*11*/ } } 程序填空
1、以下程序输入一行字符,判断其是否对称,是则输出Yes,否则输出No。#include #include main(){ char a[80];int n, i;gets(a);n =(1);for(i = 0;i
if((2))
break;if((3))printf(“Non”);else printf(“Yesn”);}
2、本程序运行的结果, 输出 如右下 所示结果.#define N 8
main(){ int i, j, k;int a[N];for(i=0;i
a[ N-1] = _____(1)_______;8 1 2 3 4 5 6 7
for(j=0;j
printf(“ %2d ”, a[k]);6 7 8 1 2 3 4
____(3)_____;5 6 7 8 1 2 3
}4 5 6 7 8 1 2 }3 4 5 6 7 8 1 gosub(int a[], int n){ int t, i;
t=a[n];
for(i=n;i>0;i--)
____(4)______;
a[0]=t;}