C语言复习题指针结构体

合集下载

C语言指针经典练习题-及答案

C语言指针经典练习题-及答案

C语言指针练习题及答案一、选择题1. 变量的指针,其含义是指该变量的____.a)值b)地址c)名d)一个标志2.若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是__ _.a)a,point,*&a b)&*a,&a,*pointc)*&point,*point,&a d)&a,&*point ,point3.若有说明;int *p,m=5,n;以下正确的程序段的是________.a)p=&n; b)p=&n;scanf("%d",&p); scanf("%d",*p);c)scanf("%d",&n); d)p=&n;*p=n; *p=m;4. 以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是__ _____.main(){int *p,*q,a,b;p=&a;printf(“input a:”);scanf(“%d”,*p);……}a)*p表示的是指针变量p的地址b)*p表示的是变量a的值,而不是变量a的地址c)*p表示的是指针变量p的值d)*p只能用来说明p是一个指针变量5. 已有变量定义和函数调用语句:int a=25; print_value(&a); 下面函数的正确输出结果是______.void print_value(int *x){ printf(“%d\n”,++*x);}a)23 b)24 c)25 d)266.若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是A) *p=&a;scanf("%ld",p);B) p=(long *)malloc(8);scanf("%ld",p);C) scanf("%ld",p=&a);D) scanf("%ld",&a);7.有以下程序#include<stdio.h>main(){ int m=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf("%d,%d,%d,%d\n",m,n,*p,*q);}程序运行后的输出结果是A)1,2,1,2 B)1,2,2,1C)2,1,2,1 D)2,1,1,28. 有以下程序main(){ int a=1, b=3, c=5;int *p1=&a, *p2=&b, *p=&c;*p =*p1*(*p2);printf("%d\n",c);}执行后的输出结果是A)1 B)2 C)3 D)49. 有以下程序main(){ int a,k=4,m=4,*p1=&k,*p2=&m;a=p1==&m;printf("%d\n",a);}程序运行后的输出结果是()A)4 B)1 C)0 D)运行时出错,无定值10. 在16位编译系统上,若有定义int a[]={10,20,30}, *p=&a;,当执行p++;后,下列说法错误的是()A)p向高地址移了一个字节B)p向高地址移了一个存储单元C)p向高地址移了两个字节D)p与a+1等价11.有以下程序段int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3], b; b=p[5]; b中的值是()A)5 B)6 C)8 D)912.若有以下定义,则对a数组元素的正确引用是_________.int a[5],*p=a;a)*&a[5] b)a+2 c)*(p+5) d)*(a+2)13.若有以下定义,则p+5表示_______.int a[10],*p=a;a)元素a[5]的地址b)元素a[5]的值c)元素a[6]的地址d)元素a[6]的值14.设已有定义: int a[10]={15,12,7,31,47,20,16,28,13,19},*p; 下列语句中正确的是()A) for(p=a;a<(p+10);a++);B) for(p=a;p<(a+10);p++);C) for(p=a,a=a+10;p<a;p++);D) for(p=a;a<p+10; ++a);15.有以下程序段#include <stdio.h>int main(){ int x[] = {10, 20, 30};int *px = x;printf("%d,", ++*px); printf("%d,", *px);px = x;printf("%d,", (*px)++); printf("%d,", *px);px = x;printf("%d,", *px++); printf("%d,", *px);px = x;printf("%d,", *++px); printf("%d\n", *px);return 0;}程序运行后的输出结果是( )A)11,11,11,12,12,20,20,20 B)20,10,11,10,11,10,11,10C)11,11,11,12,12,13,20,20 D)20,10,11,20,11,12,20,2016.设有如下定义则程序段的输出结果为int arr[]={6,7,8,9,10};int *ptr;ptr=arr;*(ptr+2)+=2;printf ("%d,%d\n",*ptr,*(ptr+2));A)8,10 B)6,8 C)7,9 D)6,1017.若有定义:int a[]={2,4,6,8,10,12},*p=a;则*(p+1)的值是_4__. *(a+5)的值是__12__.18.若有以下说明和语句,int c[4][5],(*p)[5];p=c;能正确引用c数组元素的是___ __.A) p+1 B) *(p+3) C) *(p+1)+3 D) *(p[0]+2))19.若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为__ __.a)*(a[i]+j) b)(a+i) c)*(a+j) d)a[i]+j20.若有以下定义:int a[2][3]={2,4,6,8,10,12};则a[1][0]的值是_8_. *(*(a+1)+0)的值是_ _8.21.有以下定义char a[10],*b=a; 不能给数组a输入字符串的语句是()A)gets(a) B)gets(a[0]) C)gets(&a[0]); D)gets(b);22.下面程序段的运行结果是___ __.char *s="abcde";s+=2;printf("%d",s);a)cde b)字符'c' c)字符'c'的地址d)无确定的输出结果23.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是()A) char s[10]="abcdefg"; B) char t[]="abcdefg",*s=t;C) char s[10];s="abcdefg"; D) char s[10];strcpy(s,"abcdefg");24.设已有定义: char *st="how are you"; 下列程序段中正确的是()A) char a[11], *p; strcpy(p=a+1,&st[4]);B) char a[11]; strcpy(++a, st);C) char a[11]; strcpy(a, st);D) char a[], *p; strcpy(p=&a[1],st+2);25.有以下程序输出结果是()main(){char a[]="programming",b[]="language";char *p1,*p2;p1=a;p2=b;for(i=0;i<7;i++)if(*(p1+i)==*(p2+i))printf("%c",*(p1+i));}A)gm B)rg C)or D)ga26.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是_____.a)c=*p1+*p2; b)p2=c c)p1=p2 d)c=*p1*(*p2);27.以下正确的程序段是____.a)char str[20]; b)char *p;scanf("%s",&str); scanf("%s",p);c)char str[20]; d)char str[20],*p=str;scanf("%s",&str[2]); scanf("%s",p[2]);28.若有说明语句则以下不正确的叙述是____.char a[]="It is mine";char *p="It is mine";a)a+1表示的是字符t的地址b)p指向另外的字符串时,字符串的长度不受限制c)p变量中存放的地址值可以改变d)a中只能存放10个字符29.下面程序的运行结果是___.#include <stdio.h>#include <string.h>main(){ char *s1="AbDeG";char *s2="AbdEg";s1+=2;s2+=2;printf("%d\n",strcmp(s1,s2));}a)正数b)负数c)零d)不确定的值30.有以下程序运行后的输出结果是____。

c语言练习题7(指针与结构体,有答案)

c语言练习题7(指针与结构体,有答案)

1、下列程序的运行结果是_B______。

void fun(int *a,int *b){int *k:k=a;a-b;b=k;}main(){int a=3,b=6,*x=&a,*y=&b;fun(x,y);printf[”%d%d.f,a,b);}A)6 3 B)36 C)编译出错 D)0 0PS:本题中主函数里的x、y,fun函数里的a、b、k,这些都是指针,fun函数中只是将a、b这两个指针交换了位置,而并没有改变主函数中变量a、b的值。

2、若有定义:int*p[3];,则以下叙述中正确的是____B____。

A)定义了一个基类型为int的指针变量p,该变量有三个指针B)定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针C)定义了一个名为+p的整型数组,该数组含有三个int类型元素D)定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素PS:由于运算符[]优先级比*高,int*p[3];相当于int *(p[3]);表示数组p 的三个元素都是指针变量,且每个元素都是基类型为int的指针。

3、有以下程序:void swapl(int *a,int *b){int *c=a;a=b,b=c;}void swap2(int *a,int *b){int c=*a:*a=*b,*b=c;}main()(int a=lO,b=15;swapl(&a,&b);printf(”%d,%d,”,a,b);a=lO,b=15;swap2(&a,&b);printf(”%d,%dt.,a,b);}其输出结果为_10,15,15,10___。

A)15,10,10,15 B)15,10,15,10 C)10,15,10,15 D)10,15,15,10PS:C语言规定,实参变量对形参变量的数据传递是“值传递”,只由实参传给形参,而不能由形参传回来给实参。

C语言指针习题和答案精选文档

C语言指针习题和答案精选文档

C语言指针习题和答案精选文档TTMS system office room 【TTMS16H-TTMS2A-TTMS8Q8-一、用指针方法编写一个程序,输入3个整数,将它们按由小到大的顺序输出#include <>void swap(int *pa,int *pb){int temp;temp = *pa;*pa = *pb;*pb = temp;}void main(){int a,b,c,temp;scanf("%d%d%d",&a,&b,&c);if(a>b)swap(&a,&b);if(b>c)swap(&b,&c);if(a>c)swap(&a,&c);printf("%d,%d,%d",a,b,c);}二、C语言用指针方法输入3个字符串按由小到大顺序输出#include ""#include ""int main(int argc, char* argv[]){char *t;char *p1=NULL,*p2=NULL,*p3=NULL;char ch1[20]={0},ch2[20]={0},ch3[20]={0};p1=ch1;p2=ch2;p3=ch3;printf("No1:");scanf("%s",p1);fflush(stdin);printf("No2:");scanf("%s",p2);fflush(stdin);printf("No3:");scanf("%s",p3);fflush(stdin);if(strcmp(p1,p2)>0){t=p1;p1=p2;p2=t;}if(strcmp(p1,p3)>0){t=p1;p1=p3;p3=t;}if(strcmp(p2,p3)>0){t=p2;p2=p3;p3=t;}printf("%s\n%s\n%s\n",p1,p2,p3);return 0;}编程输入一行文字,找出其中的大写字母,小写字母,空格,数字,及其他字符的个数#include<>void main(){int a=0,b=0,c=0,d=0,e=0,i=0;char *p,s[20];while((s[i]=getchar())!='\n')i++;p=s;while(*p!=10){if(*p>='A'&&*p<='Z')a++;else if(*p>='a'&&*p<='z')b++;else if(*p==' ')c++;else if(*p>='0'&&*p<='9')d++;else e++;p++;}printf("大写字母 %d 小写字母 %d\n",a,b);printf("空格 %d 数字 %d 非字符 %d\n",c,d,e);}写一个函数,将3 3矩阵转置#include ""void Transpose(int (*matrix)[3]){int temp;int i, j;for(i=1;i<3;i++)/*转置*/{for(j=0;j<i;j++){temp = *(*(matrix+j)+i);*(*(matrix+j)+i) = *(*(matrix+i)+j); *(*(matrix+i)+j) = temp;}}}void main(){int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; Transpose(a);for(int i = 0;i<3;i++){for(int j=0;j<3;j++){printf("%d ",a[i][j]);}printf("\n");}}}用指向一维数组的指针做函数参数#include<>#include<>int main(){void sort(char (*s)[6]);3”n",*(month_name+n));elseprintf("It is wrong.\n");}运行结果:① Input month: 2↙It is February.② Input month: 8↙It is August.③ Input month: 13↙It is wrong.9.11c语言:将字符串computer赋给一个字符数组,然后从第一个字母开始间隔地输出该串。

结构体指针复习

结构体指针复习

动态存储分配和释放函数 动态存储分配和释放函数
1、malloc(size) 在动态存储区分配长度为size的连续空间, size的连续空间 在动态存储区分配长度为size的连续空间,并返回指向该空间 起始地址的指针。 起始地址的指针。 若分配失败(系统不能提供所需内存),则返回NULL ),则返回NULL。 若分配失败(系统不能提供所需内存),则返回NULL。 2、free(ptr) 释放ptr指向的内存空间。ptr是 ptr指向的内存空间 函数返回的值。 释放ptr指向的内存空间。ptr是malloc() 函数返回的值。 int *p = malloc(sizeof(int)); int *p = malloc(sizeof(int)*100); free(p); 注意: 注意: include<malloc.h> (1)#include<malloc.h> sizeof是计算 是计算长度运算符 (2)sizeof是计算长度运算符
2000H
2000H
i 2 j 2
指针变量的引用
(1) 在利用指针变量进行间接访问之前,必须使其指向某一确 在利用指针变量进行间接访问之前, 定的变量,避免使用“悬挂指针” 定的变量,避免使用“悬挂指针”。 (2)该指针变量的类型与它所指向的变量的类型应该一致。 该指针变量的类型与它所指向的变量的类型应该一致。 该指针变量的类型与它所指向的变量的类型应该一致
C++: : new 类型【初值】 类型【初值】 delete 【 】指针变量
配套使用
运算符代替malloc和free函数,使分 函数, 用new和delete运算符代替 和 运算符代替 和 函数 配动态空间更加方便。 配动态空间更加方便。 注意:要配套使用! 注意:要配套使用!

c语言期末试题及答案及详解

c语言期末试题及答案及详解

c语言期末试题及答案及详解一、选择题(每题2分,共20分)1. 下列哪个选项是C语言中的关键字?A. defineB. caseC. functionD. include答案:B2. C语言中,用于定义一个结构体的关键字是:A. structB. unionC. enumD. typedef答案:A3. 若有以下代码:```cint a = 5, b = 10;a = a + b;b = a - b;a = a - b;```执行后变量a的值是:A. 5B. 10C. 15D. 0答案:B4. 下列关于指针的描述,错误的是:A. 指针可以指向一个变量B. 指针可以指向一个数组C. 指针可以指向一个函数D. 指针不可以指向一个指针答案:D5. 在C语言中,以下哪个函数用于将字符串从源字符串复制到目标字符串?A. strcpyB. strcatC. strcmpD. strlen答案:A6. 下列哪个选项是C语言中合法的数组声明?A. int arr[5] = {0, 1, 2, 3, 4};B. int arr[] = {0, 1, 2, 3, 4};C. int arr[5] = {0, 1, 2};D. int arr[] = {0, 1, 2, 3};答案:B7. C语言中,以下哪个运算符用于执行按位与操作?A. &&B. ||C. &D. &&答案:C8. 下列关于函数的描述,正确的是:A. C语言中的函数可以没有返回值B. C语言中的函数可以返回多个值C. C语言中的函数可以重载D. C语言中的函数可以嵌套定义答案:A9. 在C语言中,以下哪个选项是正确的文件操作函数?A. fopenB. fcloseC. fgetcD. All of the above答案:D10. 下列关于C语言中循环的描述,错误的是:A. for循环可以嵌套使用B. while循环可以和do-while循环嵌套使用C. do-while循环至少执行一次D. break语句可以跳出循环体答案:B二、填空题(每题2分,共20分)1. 在C语言中,用于定义一个整型变量的关键字是________。

C语言复习卷带答案

C语言复习卷带答案

姓名:__________________年级专业:__________________ 学号:__________________凡年级专业、姓名、学号错写、漏写或字迹不清者,成绩按零分记。

…………………………密………………………………封………………………………线…………………………《复习卷》试卷一、单选题(每题1分,共计30分) 1、下列选项中,不合法的变量是(D )。

A 、int x = 3; B 、char ch = 'c' C 、float f ; D 、case c;2、下列选项中,不合法的常量是(D )。

A 、2 B 、'\n' C 、'a' D 、'\483'3、关于#include<stdio.h>这句代码,下列描述中错误的是(C ) A 、"#"是预处理标志,用来对文本进行预处理操作 B 、include 是预处理指令 C 、一对尖括号可以去掉D 、stdio.h 是标准输入输出头文件4、假设a 、b 、c 、d 、m 、n 均为int 型变量,且a=5、b=6、c=7、d=8、m=2、n=2,那么逻辑表达式(m=a>b)&&(n=c>d)运算后,n 的值为( C )。

A 、0 B 、1 C 、2 D 、35、C 语言程序的三种基本结构是( A )。

A 、顺序结构,选择结构,循环结构 B 、递归结构,循环结构,转移结构 C 、嵌套结构,递归结构,顺序结构 D 、循环结构,转移结构,顺序结构6、关于下面的for 循环语句 int i,k; for(i = 0,k = -1;k = 1;i++,k++) printf(“*****”); 下列选项中,描述正确的是(B )A 、判断循环结束的条件非法B 、是无限循环C 、只循环一次D 、一次也不循环7、以下定义语句中,错误的是( D )。

C语言复习题及答案

C语言复习题及答案

复习A:一、单项选择题1、如果要把常量327存入变量a中,a不能定义的类型是哪一个? ( )A)int B)char C)long D)float2、若x 为unsigned int 型变量,则执行下列语句后x值为()x = 65535;printf(“%d\n”,x);A)65535 B)1 C)无定值D)-13、有以下程序main(){int a=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a<b);printf(″%d,%d\n″,k,m);}程序运行后的输出结果是()A)0,0 B)0,1 C)1,0 D)1,14、在C语言中,如果下面的变量都是int类型,则输出的结果是()。

sum=pad=5; pAd=sum + + ,pAd + +, + + pAd;printf("%d\n",pad);A) 7 B) 6 C) 5 D) 45、以下程序的输出结果是()。

main(){ int a=4,b=5,c=0,d;d=!a&&!b||!c;printf("%d\n",d);}A)1 B)0 C)非0的数D)-16、当执行以下程序段时()。

x=-1;do{x=x*x;}while(!x);A)循环体将执行一次B)循环体将执行两次C)循环体将执行无限次D)系统将提示有语法错误7、全局变量的存储类型可以定义为()。

A)auto或static B)extern或registerC)auto或extern D)extern或static8、定义全局变量时,若变量的的存储类别缺省,则默认的存储类型是()。

A)auto B)registerC)extern D)static9、已知:int a, x; 则正确的赋值语句是()。

A)a=(a[1]+a{2})/2; B)a*=*a+1; C)a=(x=1, x++, x+2); D)a="good";10、已知:int a, *p=&a; 则下列函数调用中错误的是()。

C语言各章节单元测试题及答案——结构体与共用体

C语言各章节单元测试题及答案——结构体与共用体

第9章结构体与共用体9.1典型考试题剖析9.1.1选择题【例1】若指针p已经正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是。

A) p=2*(int *)malloc(sizeof(int)); B) p=(int*)malloc(2*sizeof(int));C) p=(int *)malloc(2*2); D) p=(int*)calloc(2,sizeof(int));✧考点:动态存储分配函数。

✧分析:根据动态存储分配函数malloc和calloc的函数原型可以知道,calloc函数的调用形式为:void * calloc(unsigned n,unsigned size);表示在动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配域起始地址的指针,因此答案D是正确的。

malloc函数的调用形式为:void * malloc(unsigned int size);表示是在内存的动态存储区分配一个长度为size的连续空间,并返回一个指向分配域起始地址的指针,答案B和C中malloc的参数分别为:2*(sizeof(int))和2*2,都是整型数,因此调用形式正确。

答案A中(int *)malloc(sizeof(int))的返回值为一个地址值,将地址的值乘以2是没有意义的。

✧答案:A【例2】若有以下说明和定义:struct test{ int m1; char m2; float m3;union uu{ char u1[5]; int u2[2]; }ua;}myaa;则sizeof(struct test)的值是。

A) 12 B) 16 C) 14 D) 9✧考点:结构体类型和共用体类型所占内存的字节数。

✧分析:sizeof(struct test)的功能是求结构体类型test所占用的内存字节数。

它应该等于结构体每个成员所占的字节数之和。

m1为int型,占2字节,m2为char型,占1字节,m3为float型,占4字节,接下来是一个共用体类型uu,共用体所占的字节数应该等于成员中最长者所占的字节数,u1占5字节,u2占4字节,那么该共用体类型应该占用5字节,所以2+1+4+5=12。

C语言期末考试复习资料

C语言期末考试复习资料

C语言期末考试复习资料C语言复习摘要一、数据类型:基本类型(整型、实型、字符型、枚举类型),构造类型(数组、结构体、共用体)、指针类型、空类型。

基本类型也叫简单类型,构造类型也叫复杂类型二、标识符:标识符只能由字母、下划线、数字构成,且必须以字母或下划线开头,且对字母的大小写敏感。

三、常量1、整型常量,如:32,0x32,0X32,0x3f,0xea,8L,8l,0672、实型常量,如:3.14,1e23,0.8E8,0.8E-8,0.8E+83、字符常量,如:‘a’,‘\n’, ‘\w’,‘\\’,‘\0’4、字符串常量,如:“windows”,“a”,(其赋值表达式和赋值语句中其本质是一个地址常量)5、地址常量,若有定义:int k,a[10];char s[20];则:&k,a,s,NULL都是地址常量6、符号常量,用宏定义实现,如:#define PAI 3.14159267、以下都是非法常量:0xfg,3.1e2.8,‘aw’,‘w\’,0x,068四、表达式(要点:先确定表达式的类型,再确定表达式的值的类型,最后确定表达式的值):1、算术表达式(应注意变量类型的自动转换——原则:低级向高级转换):(1)、整型表达式:参加运算的都是整型量,结果也是整型数。

如:x+20*9+3(2)、实型表达式:参加运算的都是实型量,运算过程中先转换成double型,结果也是double型。

如:x+20*9+3.0,x+20*9+sqrt(3)2、赋值表达式:将赋值运算符“=”右边的值赋给左边的变量,其值为赋值后左边变量的值,类型为左边变量的类型。

如:x=3(注:若x为整型变量,则该表达式的值为整型,若x实型变量,则该表达式的值为实型)3、逻辑表达式:用逻辑运算符(!,&&,||)连接的整型量,结果为整数(0或1)。

逻辑表达式可认为是整型表达式的一种特殊形式。

如:((x=3)&&(y=0))4、关系表达式:用关系运算符将两个表达式连接起来的式子,结果为整数(0或1)。

湖南科技大学C语言部分试题题库指针,公用体等习题:

湖南科技大学C语言部分试题题库指针,公用体等习题:

湖南科技大学C语言部分试题题库指针,公用体等习题:1. 设有定义语句"int a=3,b,*p=&a;",则下列语句中使b不为3的语句是A) b=*&a; B) b=*p;C) b=a; D) b=*a ;答案:D2. 下列各语句行中,能正确进行赋字符串操作的语句是A) char s[5]={"ABCDE"};B) char s[5]={'A' ,'B','C','D','E'};C) char *s; s="ABCDE";D) char *s; scanf("%s",&s);答案:C3. 与以下说明语句等价的说明语句是int *p[4];A) int p[4]; B) int *p;C) int *(p[4]); D) int(*p)[4];答案:C选择题1、下面程序的输出是:#include<stdio.h>void main(){unsigned int a=32767;printf("a=%d\n",a);}A) a=32768 B) a=-32767 C) a=32767 D) a=-1正确答案是: C2、设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f的数据类型是:A) int型B) float型C) double型D) 不确定正确答案是: C3、以下符合C语言语法的表达式:A) d=9+e+f=d+9 B) d=9+e,f=d+9C) d=9+e=e++,d+9 D) d=9+e++=d+7正确答案是: B4、设有如下变量定义:int i=8,k,a,b;unsigned w=5;double x=1.42, y=5.2;则以下符合C语言语法的表达式是:A) a+=a-=(b=4)*(a=3) B) x%(-3) C) a=a*3=2 D) y=float(i) 正确答案是: A5、已知x=43,ch='A',y=0,则表达式(x>=y&&ch<'B'&&!y)的值是:A) 0 B) 语法错C) 1 D) "假"正确答案是: C6、阅读下面的程序#include<stdio.h>void main(){int i,j;scanf("%3d%2d",&i,&j);printf("i=%d,j=%d\n",i,j);}如果从键盘上输入1234567<回车>,则程序的运行结果是:A) i=123,j=4567 B) i=1234,j=567C) i=1,j=2 D) i=123,j=45正确答案是: D7、阅读下面的程序#include<stdio.h>void main(){char c1,c2;c1=getchar();c2=c1+3;printf("%c,%d\n",c2,c2);}已知'A'的ASCII的值为65,如果从键盘上输入D<回车>则程序的运行结果是:A) D,68 B) 'G',68 C) D,71 D) G,71正确答案是: D8、已知字母A的ASCII码为十进制的65,下面程序的输出是#include<stdio.h>void main(){char ch1,ch2;ch1='A'+'5'-'3';ch2='A'+'6'-'3';printf("%d,%c\n",ch1,ch2);}A) 67,D B) B,C C) C,D D) 不确定的值正确答案是: A9、下面程序的输出是#include<stdio.h>void main(){int x=023;printf("%d\n",--x);}A) 17 B) 18 C) 23 D) 24正确答案是: B10、表达式: 10!=9的值是A) true B) 非零值C) 0 D) 1正确答案是: D11、设a为整型变量,不能正确表达数学关系:10<a<15 的C语言表达式是A) 10<a<15 B) a==11 || a==12 || a==13 || a==14 C) a>10 && a<15 D) !(a<=10) && !(a>=15)正确答案是: A12、若有以下定义: int a,b,c1,c2,x,y; 则正确的switch 语句是A) switch(a+b); B) switch(a*a+b*b){ case 1:y=a+b;break; { case 3:case2:y=a-b;break; case1:y=a+b;break; case 3:y=b-a;break; }}C) switch a D) switch(a-b){ case c1:y=a-b;break; { default:y=a*b;break;case c2:y=a*d;break; case 3:default:x=a+b; case 4:x=a+b;break;} case 10:正确答案是: D case 11:y=a-b;break;}13、若运行下面程序时,给变量a输入15,则输出结果是#include <stdio.h>void main( ){ int a,b;scanf("%d",&a);b=a>15?a+10:a-10;printf("%d\n",b) ;}A) 5 B) 25 C) 15 D) 10正确答案是: A14、与y=(x>0?1:x<0?-1:0); 的功能相同的if语句是(A)A) if (x>0) y=1; B) if(x)else if (x<0) y=-1; if (x>0) y=1;else y=0; else if (x<0) y=-1;else y=0;C) y=-1; D) y=0;if(x) if (x>=0)if (x>0) y=1; if (x>0) y=1;else if (x==0) y=0; else y=-1;else y=-1;15、有如下程序:#include <stdio.h>void main( ){ int a=2,b=-1,c=2;if (a<b)if (b<0) c=0;else c++;printf("%d\n",c);}该程序的输出结果是A) 0 B) 1 C) 2 D) 3正确答案是: C16、指出下列程序段所表示的逻辑关系是( B )。

《C语言程序设计II》期末复习

《C语言程序设计II》期末复习

《C语言程序设计II》期末复习一、复习内容:⏹第1~4讲指针●指针的概念:内存单元的排列方式、地址的概念、不同数据类型内存单元的个数、存储方式不同,两种变量的存取方式,指针即是地址,NULL;●指针变量:概念和定义方法(空悬指针、空类型与空指针),指针的两个特殊运算符(*与&),指针变量作为函数参数(通过函数调用得到n个要改变的值);●指针运算:指针与整数的运算、++(--)、比较、相减;●指针与一维数组:对数组名的理解,指针与一维数组(指向数组元素的指针、引用数组元素时的指针运算、通过指针引用数组元素的几种方法、用数组名作函数参数);●指针与二维数组:理解二维数组中行指针、列指针的类型,加减1所移动的字节数,如何利用它们访问二维数组元素,用作函数参数参数时在主调函数中如何给出实参。

●通过指针引用字符串:字符串的引用方式,字符指针作函数参数,使用字符指针变量和字符数组的比较;●指向函数的指针:什么是函数指针,怎样定义和使用指向函数的指针变量,用指向函数的指针作函数参数;●返回指针值的函数:函数的返回值是一个地址,定义格式,使用;●指针数组和多重指针:什么是指针数组,指向指针数组的指针,指针数组作main函数的形参;●动态内存分配:动态内存分配的概念、必要性,与动态内存分配相关的4个函数,动态数组的建立;●有关指针的小结:指针、指向、指针变量,void *类型与NULL的比较,指针与数组的关系,各类指针类型的比较,指针的几类运算;●结构体指针:什么是结构体指针,用结构体指针访问成员的简便写法,指向结构体数组的指针,结构体变量与结构体指针作函数参数;●用指针处理链表:什么是链表,建立静态链表,建立动态链表,输出链表。

(理解链表的概念,本次考试不包含这一部分内容)。

⏹第5讲位运算和预处理指令●位运算与位运算符:位运算概念,6种基本的位运算符(&、|、^、~、<<、>>),&和^运算符的一些用法,位运算的复合赋值运算符;●位段:问题的提出,位段的概念与定义,位段的使用,注意事项;(这一部分内容不考)●预处理:概念,主要工作,功能类型,书写要求;●宏定义:不带参数的宏定义,带参数的宏定义;●“文件包含”处理:格式,作用,带<>与””的差别;●条件编译:概念,好处,几种基本格式。

C语言复习提纲(含答案)

C语言复习提纲(含答案)
A) 0~255 C) 0~65535 B) 0~32767 D) 0~2147483647
5.设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为 D 。
A) float
Logo
B) char
C) int
D) double
14
表达式
不同类型数据间的转换与运算。 例如:int a=123; 则a/100的值为(1),
2、找出最大数、最小数和平均数 3、判断某一年是否为闰年 4、判断某个数是否为素数 5、冒泡、选择、插入排序
6、求多项式的值
Logo
7
第3章 顺序程序设计
常量:整型、实型、字符(普通、转义)、字符串、 符号
字符常量:ASCII码存储 空格为32
字符变量: char c1=100; 与c1=„e‟等价 字母小写→ 大写 c=c-32;或c=c-„a‟-„A‟;
Logo
18
数据的输入与输出
printf(格式控制,输出表列) 例如:
printf("i=%d,ch=%c\n",i,ch);
(1)“格式控制”是用双撇号括起来的字符串,也称“转换控制字 符串”,它包括两种信息:
①格式说明:由“%”和格式字符组成,它的作用是将输出的
数据转换为指定的格式输出。 ②普通字符,即需要原样输出的字符。
} 4. 假设变量a和b均为整型,以下语句可以不借助任何变量把a、 b中的值进行交换。请填空。 a+=【4】; b=a-【5】; a-=【6】;
b
b
b
Logo
23
第4章 选择结构
用if语句实现选择结构。 用switch语句实现多分支选择结构。根据表达式的 具体值进行多分支选择、表达式的类型要求、语句中 的break。 选择结构的嵌套

C语言的简答题包含解答共30道题

C语言的简答题包含解答共30道题

C语言的简答题包含解答共30道题1. 什么是C语言?- C语言是一种通用的、过程性的编程语言,由Dennis Ritchie在20世纪70年代初开发。

它被广泛用于系统编程、应用程序开发和嵌入式系统中。

2. C语言的基本数据类型有哪些?- C语言的基本数据类型包括int、float、double、char、short和long等。

3. 如何在C语言中声明一个整数变量?-可以使用以下语法声明一个整数变量:```cint myInteger;```4. 如何在C语言中打印文本到屏幕上?-可以使用`printf`函数来打印文本:```cprintf("Hello, World!\n");```5. 什么是C语言中的注释?-注释是用于添加说明性信息的文本,编译器会忽略它们。

在C语言中,单行注释使用`//`,多行注释使用`/* */`。

6. 如何在C语言中实现条件语句?-可以使用`if`、`else if`和`else`关键字来实现条件语句,例如:```cif (condition) {// 代码块} else if (anotherCondition) {// 代码块} else {// 代码块}```7. C语言中的循环结构有哪些?- C语言中的主要循环结构包括`for`、`while`和`do-while`。

8. 如何声明和初始化一个数组?-可以使用以下语法声明和初始化一个整数数组:```cint myArray[5] = {1, 2, 3, 4, 5};```9. 如何访问数组中的元素?-可以使用数组下标来访问数组中的元素,下标从0开始,例如:```cint x = myArray[2]; // 访问第三个元素,值为3```10. 什么是函数?如何声明和调用函数?-函数是一段可重用的代码块,可以接受参数并返回值。

可以使用以下语法声明和调用函数:```c// 声明函数int add(int a, int b);// 调用函数int result = add(3, 4);```11. 什么是指针?-指针是一种变量类型,用于存储变量的内存地址。

指针结构体

指针结构体

指针、结构体练习题一、选择题1.变量的指针,其含义是指该变量的。

A)值B)地址C)名D)一个标志2.已有定义int k=2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是。

A)k=*ptr1+*ptr2 B)ptr2=k C)ptr1=ptr2 D)k=*ptr1*(*ptr2) 3.若有说明:int *p,m=5,n;以下程序段正确的是。

A)p=&n ; B)p = &n ;scanf(“%d”,&p); scanf(“%d”,*p);C)scanf(“%d”,&n); D)p = &n ;*p=n ; *p = m ;4.已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的输出结果是。

void print_value(int *x){ printf(“%d\n”,++*x); }A)23 B)24 C)25 D)265.若有说明:int *p1, *p2,m=5,n;以下均是正确赋值语句的选项是。

A)p1=&m; p2=&p1 ; B)p1=&m; p2=&n; *p1=*p2 ;C)p1=&m; p2=p1 ; D)p1=&m; *p1=*p2 ;6.若有语句:int *p,a=4;和p=&a;下面均代表地址的一组选项是。

A)a,p,*&a B)&*a,&a,*p C)*&p,*p,&a D)&a,&*p,p7.下面判断正确的是。

A)char *a=”china”; 等价于char *a; *a=”china” ;B)char str[10]={“china”}; 等价于char str[10]; str[ ]={“china”;}C)char *s=”china”; 等价于char *s; s=”china” ;D)char c[4]=”abc”,d[4]=”abc”; 等价于char c[4]=d[4]=”abc” ;8.下面程序段中,for循环的执行次数是。

c语言结构体指针 typedef

c语言结构体指针 typedef

C语言中的结构体指针与typedef一、结构体指针的概念结构体是C语言中一种复合类型,它由若干数据成员组成,我们可以通过定义结构体变量的方式来使用结构体类型。

当我们需要在函数间传递结构体变量或在函数中动态创建结构体变量时,就需要使用结构体指针来进行操作。

二、结构体指针的定义和使用1. 定义结构体指针在C语言中,我们可以通过在结构体类型名称前加上"*"来定义结构体指针。

如果我们有一个名为Student的结构体类型,我们可以定义一个指向Student类型的指针变量ptr_stu如下所示:```struct Student {char name[20];int age;};struct Student *ptr_stu;```2. 结构体指针的初始化和使用我们可以通过使用取位置区域符""将结构体变量的位置区域赋给结构体指针,然后可以通过指针来访问结构体的成员变量。

假设我们有一个名为stu的结构体变量:```struct Student stu = {"John", 20};struct Student *ptr_stu = stu;printf("Name: s\n", ptr_stu->name);printf("Age: d\n", ptr_stu->age);```而在实际开发中,如果结构体类型名称较长或者需要频繁使用结构体指针,我们可以通过使用typedef来定义结构体指针类型,从而简化代码并提高可读性。

三、typedef关键字的介绍typedef是C语言中的关键字之一,它可以用来为一个已有的数据类型定义一个新的名称。

通过使用typedef,我们可以为复杂的数据类型定义更简洁、更易读的别名,从而提高代码的可维护性和可读性。

四、结构体指针的typedef用法1. 定义结构体指针类型我们可以通过使用typedef来定义结构体指针类型,从而可以直接使用新的类型名称来声明结构体指针变量。

C语言(指针与结构体)习题与答案

C语言(指针与结构体)习题与答案

1、设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是()。

A.p=q;B.*p=&n1;C.p=*q;D.*p=*q;正确答案:D2、有以下程序main( ){ int a=7,b=8,*p,*q,*r;p=&a;q=&b;r=p; p=q;q=r;printf("%d,%d,%d,%d\n",*p,*q,a,b);}程序运行后的输出结果是()。

A.7,8,8,7B.8,7,7,8C. 8,7,8,7D.7,8,7,8正确答案:B3、程序中对fun函数有如下说明void *fun( );此说明的含义是()。

A.fun函数的返回值可以是任意的数据类型B. fun函数的返回值是无值型的指针类型C.指针fun指向一个函数,该函数无返回值D.fun函数无返回值正确答案:B4、有以下程序main(){ int a[]={2,4,6,8,10},y=0,x,*p; p=&a[1];for(x=1;x<3;x++) y+=p[x]; printf("%d\n",y);}程序运行后的输出结果是()。

A.15B.10C.14D.11正确答案:C5、有以下程序:main(){int a[3][3],*p,i;p=&a[0][0];for(i=0;i<9;i++)p[i]=i;for(i=0;i<3;i++)printf("%d ",a[1][i]);}程序运行后的输出结果是()。

A.1 2 3B.2 3 4C.3 4 5D.0 1 2正确答案:C6、有以下程序prt(int *m,int n){ int i;for(i=0;i<n;i++)m[i]++;}main( ){ int a[]={1,2,3,4,5},i;prt(a,5);for(i=0;i<5;i++)printf("%d,",a[i]);}程序运行后的输出结果是()。

C语言复习提纲(含答案)

C语言复习提纲(含答案)


B) 一个整型表达式 D) 一个不合法的表达式
10
Logo
常见运算符
①算术运算符(+ - * / % ++ --):运算结果为数值。 注意:
自增、自减运算符的应用
②关系运算符(> < == >= <= !=):运算结果为1(真)或0 (假)。
③逻辑运算符(! && ||):运算结果为1(真)或0(假)。
变量:先定义,再使用
标识符:掌握标识符的命名规则:以下划线或字母开始,后 面跟着数字、字母、下划线。 a_b (合法) a-b (不合法)
Logo
8
短整型short 整 数值类型 基本类型 字符类型char 数组 结构体struct 构造类型 共用体union 浮点型 型 整型int 长整型long
第4章 选择结构程序设计
第5章 循环结构程序设计 第6章 利用数组处理批量数据 第7章 用函数实现模块化程序设计 第8章 善于利用指针 第9章 用户自己建立数据类型 第10章 对文件的输入输出
Logo
3
第1章 程序设计和C语言
C语言程序基本构成(1.4.2节),包括:
函数与主函数 程序由一个或多个函数组成 必须有且只能有一个主函数main() 程序执行从main开始,在main中结束,其它函数通过 嵌套调用得以执行。
a/10%10的值为(2),a%10的值为( 3 )
表达式 j=i++/2 的值
注意:两整数相除,结果为整数
Logo
15
C语句分类
程序控制语句(9种):
分支:if( )~else~ ;switch
循环:for( )~;while( )~;do~while( ) 辅助控制:continue;break;goto;return 函数调用语句 表达式语句:表达式加分号构成。

三峡大学c语言考研题库

三峡大学c语言考研题库

三峡大学c语言考研题库三峡大学C语言考研题库涵盖了C语言的基础知识、数据类型、控制结构、函数、数组、指针、结构体、联合体、枚举、预处理指令、位运算、文件操作等多个方面。

以下是一些典型的题目和解答示例:# 一、选择题1. C语言中,一个整型变量int占用的字节数是:A. 1B. 2C. 4D. 8解答:C。

在大多数现代计算机系统中,整型变量int通常占用4个字节。

2. 下列哪个是C语言的关键字?A. voidB. mainC. defineD. if解答:D。

if是C语言的关键字,而void是类型说明符,main是函数名,define是预处理指令。

# 二、简答题1. 解释C语言中数组和指针的关系。

解答:在C语言中,数组名可以作为指针使用。

数组名实际上代表数组首元素的地址。

当数组作为参数传递给函数时,实际上是传递了数组首元素的地址。

指针变量可以指向数组的元素,并通过指针进行元素的访问和修改。

2. 说明C语言中结构体的定义和使用。

解答:结构体是C语言中一种用户自定义的数据类型,它允许将不同的数据类型组合成一个单一的类型。

定义结构体使用关键字`struct`,后面跟结构体的名称和大括号内定义的成员变量。

使用结构体时,可以创建结构体变量,访问其成员变量,并将结构体变量作为参数传递给函数。

# 三、编程题1. 编写一个C语言程序,实现对一个整数数组的排序。

```c#include <stdio.h>void sortArray(int arr[], int size) {int i, j, temp;for (i = 0; i < size - 1; i++) {for (j = 0; j < size - i - 1; j++) {if (arr[j] > arr[j + 1]) {temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}int arr[] = {64, 34, 25, 12, 22, 11, 90}; int size = sizeof(arr) / sizeof(arr[0]);sortArray(arr, size);printf("Sorted Array: \n");for (int i = 0; i < size; i++) {printf("%d ", arr[i]);}printf("\n");return 0;}```2. 编写一个C语言程序,实现字符串的反转。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

矿产资源开发利用方案编写内容要求及审查大纲
矿产资源开发利用方案编写内容要求及《矿产资源开发利用方案》审查大纲一、概述
㈠矿区位置、隶属关系和企业性质。

如为改扩建矿山, 应说明矿山现状、
特点及存在的主要问题。

㈡编制依据
(1简述项目前期工作进展情况及与有关方面对项目的意向性协议情况。

(2 列出开发利用方案编制所依据的主要基础性资料的名称。

如经储量管理部门认定的矿区地质勘探报告、选矿试验报告、加工利用试验报告、工程地质初评资料、矿区水文资料和供水资料等。

对改、扩建矿山应有生产实际资料, 如矿山总平面现状图、矿床开拓系统图、采场现状图和主要采选设备清单等。

二、矿产品需求现状和预测
㈠该矿产在国内需求情况和市场供应情况
1、矿产品现状及加工利用趋向。

2、国内近、远期的需求量及主要销向预测。

㈡产品价格分析
1、国内矿产品价格现状。

2、矿产品价格稳定性及变化趋势。

三、矿产资源概况
㈠矿区总体概况
1、矿区总体规划情况。

2、矿区矿产资源概况。

3、该设计与矿区总体开发的关系。

㈡该设计项目的资源概况
1、矿床地质及构造特征。

2、矿床开采技术条件及水文地质条件。

相关文档
最新文档