下面程序的输出结果是( )
int x = 3;do{PRintf(“%d/n”,x -= 2); //当x=3时x-=2后x的值为1}while(!(-- x));//当x非0时!x结果为0,当x=0时!x值为非0下面程序的输出结果是( )
void main(){int a[]={1,7,12,15};int *p1=a,*p2 = p1++; //自增运算,P1++表示先赋值后自增,即现将p1的值赋给p2,P1再自增,此时p1为a[1]*p1 += *p2++; //*的优先级与++一样,所以先运算*p1=*p1+*p2,此时p1=a[1]=8;再运算P2++,此时P2=a[1]printf(“%d %d”,*p1,*p2);}下面程序的输出结果是( )
int func(int *p){ return (*p--= 3) - 1; //(*p--=3)表示将3赋值给*p之后p--此时p指向第一个元素,(*p--=3)-1表示(*p=3)-1与p--无关}void main(){ int arr[]={10,7,5}; int *p = arr + 1; printf("%d",func(p) + *p);//*p仍然指向第二个元素即3,因为func中仅仅是形参自减而实参未改变,改变的实参指针指向的地址的值}下面程序的输出结果是( )
void main(){ int i = 1; switch(i){ printf("hello "); //不在case或者default语句中不会执行 case 1:printf("Hi "); //没有break语句会执行之后的所有语句顾输出 Hi Bye case 2:printf("Bye "); }}下面程序的输出结果是( 45 )
void main(){ int a,b = 0; static int c[10]={9,2,3,4,5,6,7,8,0,1}; for(a = 0;a < 10;a ++) b += c[a]; printf("%d",b);}运行以下程序后文件的内容为( B ) 几种文件读写的方式 (1)用”r”方式打开的文件,不能向其输入数据,并且该文件已存在,否则出错; (2)用”w”方式打开的文件,只能向该文件输入数据,如果所打开的文件不存在,则在打开时新建一个以指定的名字命名的文件;如果指定文件存在,则在打开时将该文件删去,然后新建一个新的文件; (3)如果函数fopen打开文件出错,则fopen返回一个空指针值NULL; (4)在程序开始运行时,系统自动打开3个标准文件:标准输入(stdin),标准输出(stdout),标准出错输 出(stderr)。如果要使用输入输出终端,则不需要打开,可以直接使用,如fputc(stdout,’a’);向屏幕输出字符a。
void main(){ char str[100]; //文件名 FILE *p1,*p2; gets(str); p1 = fopen(str,”w”);//"w"为覆盖写,即原文件有内容则删除后写 p2 = fopen(str,”w”); //fopen格式为(文件名,打开方式); fputc(‘A’,p1); fputc(‘B’,p2); //"w"打开,故将P1写的A覆盖后只剩B fclose(p1); fclose(p2);}下面程序的输出结果是( 2 )
long fib(int n){ if(n > 2) return (fib(n - 1) + fib(n - 2)); else return 1;}void main(){printf(“%d/n”,fib(3));}下面程序的输出结果是(12480 )
void main(){ char c = 48; int i,mark = 01; for(i = 0;i < 5;i ++) { printf(“%c”,c|mark); //|为二进制或,规则为有一个为1则结果为1 mark = mark << 1; //左移操作}}下面程序的功能是将字符串src逆序输出,请将下面程序的错误改正,缺少的代码补全。//为改错语句
#include<stdio.h>#include<string.h>#include<malloc.h>#include<stdlib.h>#include<time.h>void main(){char *src = "hello,world";char *dest,*d,*p;int len,i;len=strlen(src); //strlren 计算字符串的长度不包含结束标志符dest = (char *)malloc(len);//dest=(char*)malloc((len+1)*sizeof(char)); //len不包括结束标识符所以dest的长度要在len之上加1p=src[len];//p = &src[len-1]; //len-1为字符串最后一位,且需要取地址符d = dest;while(len--!= 0) d ++ = p --;// *(d++)=*(p--); //指针值得赋值需要添加“*”// *d = '/0'; //字符串最后一位需要添加结束标志符printf("%s",dest);}输出结果为a=7,b=30
#define SQUARE(x) ((x)*(x)); //宏语句的定义void main(){ int a = 5,b; b = SQUARE(a++); //等价语句与a*(a++);a++,则得a=7,b=30 printf("%d,%d",a,b);}运行结果为 1,2,4,0
void main(){ void fun(int a[],int n); int a[] = {1,2,4,8}; int i; fun(a,4); //数组数据在函数调用过程中不能采用传值调用的参数传递方法,而是采用传址调用 for(i = 0;i < 4;i ++) printf(“%d,”,a[i]);}void fun(int a[],int n){ int i,*p; for(i = 0;i < n;i ++) p = &a[i]; *p = 0;}下面这段程序的功能是什么?//截取字符串从m位开始之后的所有字符,当m大于字符串长度时返回空
char str[100];char string[100];void main(){ void fun(int m); int m; gets(str); scanf(“%d”,&m); fun(m); printf(“%s/n”,string);}void fun(int m){ int len,i; len = strlen(str); if(m > len) { string[0] = ‘/0’; return ;}for(i = 0;str[m - 1] != ‘/0’;i ++,m ++) string[i] = str[m - 1];string[i] = ‘/0’;}C语言的隐式类型转换发生的四种情况 1、算术运算式中,低类型能够转换为高类型。 2、赋值表达式中,右边表达式的值自动隐式转换为左边变量的类型,并赋值给它。 3、函数调用中参数传递时,系统隐式地将实参转换为形参的类型后,赋给形参。 4、函数有返回值时,系统将隐式地将返回表达式类型转换为返回值类型,赋给调用函数。
逆序/头插法建立链表
#include<stdio.h>#include<string.h>#include<malloc.h>#include<stdlib.h>#include<time.h>typedef struct Node{ //typedef 将node作为结构体别名,之后使用时只需要别名即可,否则需要用struct Node的形式使用 int x; struct Node* next;}node; void main(){ node *s,*head; head=(node*)malloc(sizeof(node)); //sizeof()内的参数为变量而非变量指针 head->x=0; head->next=NULL; int num; node* temp=head; for(int i=0;i<20;i++) { s=(node*)malloc(sizeof(node)); scanf("%d",&s->x); s->next=head->next; //逆序即头插法 head->next=s; } s=head->next; //输出循环时使用 while(s!=NULL) //此处为s!=NULL而非S->next!=NULL { printf("%d",s->next); s=s->next; }}新闻热点
疑难解答