c語言模擬題答案

b
全局變數可以在函數以外的任何部位進行定義
c語言里全局變數在文件的開頭定義。如:
int
a=10;//文件開頭定義
main()
{
a=a+10;
......
}
函數以外的任何位置定義肯定不對,如:
main()
{
a=a+10;
......
}
int
a=10;//函數後面定義肯定不行啦,編譯器都通不過
c中,在局部變數前加一個static
的話就成了靜態局部變數。它的特點:同一次函數調用內它的值可以被保存到下一次執行該函數內使用到該變數的語句中,但是不能保存到下一次該函數的調用!!
你可能不理解,但是我沒時間給你編程舉例子,以後有時間在寫。

http://..com/question/84804425.html

⑵ C語言程序模擬題

bbacbaddbb

#include<stdio.h>
#include<string.h>
int main()
{
int a[10]={0};
char s[100];
int i;
char *p=s;

printf("enter string:");
fgets(s,50,stdin);
while(*p!='\0')
{
if(*p>='0' && *p<='9')
a[*p-'0']+=1;
}
for(i=0;i<10;i++)
{
printf("%d appear %d times\n",i,a[i]);
}
p++;
}

#include<stdio.h>
int main()
{
int i,j,n;

printf("enter a number:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<2*n;j++)
{
if(j>=n-j && j<=n+j)
printf("%d",i);
else
printf(" ");
}
printf("\n");
}
}

睡覺了...

⑶ C語言上機模擬題。。。

用文件操作即可,先定義文件指針,使它指向要更改的文件,打開,更改文件屬性,具體可以參考C語言程序設計,文件操作,就能解決問題了

⑷ C語言考試模擬卷

一、選擇題
下列各題 A、B、C、D.四個選項中,只有一個選項是正確的,請將正確選項塗寫在答題卡相應位置上,答在試卷上不得分。
(1) 用8位無符號二進制數能表示的最大十進制數為
A.127
B.128
C.255
D.256
(2) 在64位高檔微機中,一個字長所佔的二進制位數為
A.8
B.16
C.32
D.64
(3) 在Windows環境下,為了復制一個對象,在用滑鼠拖動該對象時應同時按住
A.Alt鍵
B.Esc鍵
C.Shift鍵
D.Ctrl鍵
(4) 在Windows菜單中,暗淡(灰色)的命令項表示該命令
A.暫時不能用
B.正在執行
C.包含下一層菜單
D.包含對話框
(5) 在DOS環境下,為了得到TYPE命令的幫助信息,正確的DOS命令為
A.TYPE
B.TYPE/H
C.TYPE/*
D.TYPE/?
(6) 下列選項中,能作為合法DOS文件名的是
A.ANP/A.DAT
B.ABCCOM
C.ECD.BASIC
D.XY+Z.TXT
(7) 下列敘述中正確的是
A.在Windows環境下,最大化的窗口是不能移動的
B.在Windows環境下,應用程序窗口最小化後,該應用程序暫停執行
C.在Windows環境下,只有最小化的窗口才能關閉
D.在Windows環境下,不能關閉最大化的窗口
(8) 在Windows環境下,工具欄中的復制按鈕是
A.列印機圖標
B.剪刀標志
C.復制標志
D.粘貼標志
(9) 在Windows98環境下,若要將整個屏幕上顯示的內容存入剪貼板,可以按
A.Ctrl+PrintScreen鍵
B.Alt+PrintScree鍵
C.Shift+PrintScreen鍵
D.PrintScreen鍵
(10) 目前,計算機病毒擴散最快的途徑是
A.通過軟體復制
B.通過網路傳播
C.通過磁碟考貝
D.運行游戲軟體
(11) 以下敘述中正確的是
A.C語言比其他語言高級
B.C語言可以不用編譯就能被計算機識別執行
C.C語言以接近英語國家的自然語言和數學語言作為語言的表達形式
D.C語言出現的最晚,具有其他語言的一切優點
(12) C語言中用於結構化程序設計的三種基本結構是
A.順序結構、選擇結構、循環結構
B.if、switch、break
C.for、while、do-while
D.if、for、continue
(13) 在一個C程序中
A.main函數必須出現在所有函數之前
B.main函數可以在任何地方出現
C.main函數必須出現在所有函數之後
D.main函
(14) 下列敘述中正確的是
A.C語言中既有邏輯類型也有集合類型
B.C語言中沒有邏輯類型但有集合類型
C.C語言中有邏輯類型但沒有集合類型
D.C語言中既沒有邏輯類型也沒有集合類型
(15) 下列關於C語言用戶標識符的敘述中正確的是
A.用戶標識符中可以出現在下劃線和中劃線(減號)
B.用戶標識符中不可以出現中劃線,但可以出現下劃線
C.用戶標識符中可以出現下劃線,但不可以放在用戶標識符的開頭
D.用戶標識符中可以出現在下劃線和數字,它們都可以放在用戶標識符的開頭
(16) 若有以下程序段(n所賦的是八進制數)
int m=32767,n=032767
printf("%d,%o/n",m,n);
執行後輸出結果是
A.32767,32767
B.32767,032767
C.32767,77777
D.32767,077777
(17) 下列關於單目運算符++、--的敘述中正確的是
A.它們的運算對象可以是任何變數和常量
B.它們的運算對象可以是char型變數和int型變數,但不能是float型變數
C.它們的運算對象可以是int型變數,但不能是double型變數和float型變數
D.它們的運算對象可以是char型變數、int型變數和float型變數
(18) 若有以下程序段
int m=0xabc,n=0xabc;
m-=n;
printf("%X\n",m);
執行後輸出結果是
A.0X0
B.0x0
C.0
D.0XABC
(19) 有以下程序段
int m=0,n=0; char c='a';
scanf("%d%c%d",&m,&c,&n);
printf("%d,%c,%d\n",m,c,n);
若從鍵盤上輸入:10A10<回車>,則輸出結果是:
A.10,A,10
B.10,a,10
C.10,a,0
D.10,A,0
(20) 有以下程序
main()
{ int i;
for(i=0;i<3;i++)
switch(i)
{ case 1: printf("%d",i);
case 2: printf("%d",i);
default: printf("%d",i);
}
}
執行後輸出結果是
A.011122
B.012
C.012020
D.120
(21) 有以下程序
main()
{ int i=1,j=1,k=2;
if((j++‖k++)&&i++) printf("%d,%d,%d\n",i,j,k);
}
執行後輸出結果是
A.1,1,2
B.2,2,1
C.2,2,2
D.2,2,3
(22) 有以下程序
main()
{ int a=5,b=4,c=3,d=2;
if(a>b>
C.
printf("%d\n",
D.;
else if((c-1>=
D.==1)
printf("%d\n",d+1);
else
printf("%d\n",d+2)
}
執行後輸出結果是
A.2
B.3
C.4
D.編譯時有錯,無結果
(23) 有以下程序
main()
{ int p[7]={11,13,14,15,16,17,18},i=0,k=0;
while(i<7&&p[i]%2){k=k+p[i];i++;}
printf("%d\n",k);
}
執行後輸出結果是
A.58
B.56
C.45
D.24
(24) 有以下程序
main()
{ int i=0,s=0;
do{
if(i%2){i++;continue;}
i++;
s +=i;
}while(i<7);
printf("%d\n",s);
}
執行後輸出結果是
A.16
B.12
C.28
D.21
(25) 有以下程序
main()
{ int i=10,j=1;
printf("%d,%d\n",i--,++j);
}
執行後輸出結果是
A.9,2
B.10,2
C.9,1
D.10,1
(26) 有以下程序
main()
{ char a,b,c,*d;
a='\'; b='\xbc';
c='\0xab'; d="\017";
print("%c%c%c\n",a,b,c,*
D.;
}
編譯時出現錯誤,以下敘述中正確的是
A.程序中只有a='\';語句不正確
B.b='\xbc';語句不正確
C.d="\0127";語句不正確
D.a='\';和c='\0xab';語句都不正確
(27) 有以下程序
int fl(int x,int y)
{ return x>y?x:y; }
int f2(int x,int y)
{ return x>y?y:x; }
main()
{ int a=4,b=3,c=5,d,e,f;
d=f1(a,
B.; d=f1(d,
C.;
e=f2(a,
B.; e=f2(e,
C.;
f=a+b+c-d-e;
printf("%d,%d,%d\n",d,f,e);
}
執行後輸出結果是
A.3,4,5
B.5,3,4
C.5,4,3
D.3,5,4
(28) 有如下程序
void f(int x,int y)
{ int t;
if(x
}
main()
{ int a=4,b=3,c=5;
f(a,
B.; f(a,
C.; f(b,
C.;
printf("%d,%d,%d\n",a,b,
C.;
}
執行後輸出結果是
A.3,4,5
B.5,3,4
C.5,4,3
D.4,3,5
(29) 若有以下定義和語句
#include
int a=4,b=3,*p,*q,*w;
p=&a; q=&b; w=q; q=NULL;
則以下選項中錯誤的語句是
A.*q=0;
B.w=p;
C.*p=a;
D.*p=*w;
(30) 有以下程序
int *f(int *x,int *y)
{ if(*x<*y)
return x;
else
return y;
}
main()
{ int a=7,b=8,*p,*q,*r};
}
執行後輸出結果是
A.7,8,8
B.7,8,7
C.8,7,7
D.8,7,8
(31) 有以下程序
main()
{ char *s[]={"one","two","three"},*p;
p=s[1];
printf("%c,%s\n",*(p+1),s[0]);
}
執行後輸出結果是
A.n,two
B.t,one C)w,one
D.o,two
(32) 有以下程序
main()
{ int x[8]={8,7,6,5,0,0},*s;
s=x+3
printf("%d\n",s[2]);
}
執行後輸出結果是
A.隨機值
B.0
C.5
D.6
(33) 以下能正確定義數組並正確賦初值的語句是
A.int N=5,b[N][N];
B.int a[1][2]={{1},{3}};
C.int c[2][]={{1,2},{3,4}};
D.int d[3][2]={{1,2},{34}};
(34) 有以下程序
main()
{ int m[][3]={1,4,7,2,5,8,3,6,9};
int i,j,k=2;
for(i=0;i<3;i++)
{ printf("%d",m[k][i]); }
}
執行後輸出結果是
A.4 5 6
B.2 5 8
C.3 6 9
D.7 8 9
(35) 以下函數的功能是:通過鍵盤輸入數據,為數組中的所有元素賦值。
#define N 10
void arrin(int x[N])
{ int i=0;
while(i
scanf("%d", );
}
在下劃線處應填入的是
A.x+i
B.&x[i+1]
C.x+(i++) D)&x[++i]
(36) 有以下程序
main()
{ char s[]="\n123\\";
printf("%d,%d\n",strlen(s),sizeof(s));
}
執行後輸出結果是
A.賦初值的字元串有錯
B.6,7
C.5,6
D.6,6
(37) 閱讀以下函數
fun(char *s1,char *s2)
{ int i=0;
while(s1[i]==s2[i]&& s2[i]!='\0')i++;
return(s1[i]== && s2{i}!=='\0');
}
此函數的功能是
A.將s2所指字元串賦給s1
B.比較s1和s2所指字元串的大小,若s1比s2的大,函數值為1,否則函數值為0
C.比較s1和s2所指字元串是否相等,若相等,函數值為1,否則函數值為0
D.比較s1和s2所指字元串的長度,若s1比s2的長,函數值為1,否則函數值為0
(38) 以下敘述中正確的是
A.全局變數的作用域一定比局部變數的作用域范圍大
B.靜態(stati
C.類別變數的生存期貫穿於整個程序的運行期間
C.函數的形參都屬於全局變數
D)未在定義語句中賦初值的auto變數和static變數的初值都是隨機值
(39) 設有如下說明
typedef struct
{ int n; char c; double x;}STD;
則以下選項中,能正確定義結構體數組並賦初值的語句是
A.STD tt[2]={{1,'A',62},{2, 'B',75}};
B.STD tt[2]={1,"A",62},2, "B",75};
C.struct tt[2]={{1,'A'},{2, 'B'}};
D.structtt[2]={{1,"A",62.5},{2, "B",75.0}};
(40) 有以下程序
main()
{ union { unsigned int n;
unsigned char c;
}u1;
ul.c=`A`;
printf("%c\n",u1.n);
}
執行後輸出結果是
A.產生語法錯
B.隨機值
C.A
D.65
(41) 有以下程序
main()
{ char str[]="xyz",*ps=str;
while(*ps)ps++;
for(ps--;ps-str>=0;ps--) puts(ps);
}
執行後的輸出結果是
A.yz
B.z
C.z
D.x
xyz yz yz xy
xyz xyz
(42) 有以下程序
main()
{ int a[][3]={{1,2,3},{4,5,0}},{*pa}[3],i;
pa=a;
for(i=0;i<3;i++)
if(i<2) pa[1][i]=pa[1][i]-1;
else pa[1][i]=1;
printf("%d\n",a[0][1]+a[1][1]+a[1][2]);
}
執行後輸出結果是
A.7
B.6
C.8
D.無確定值
(43) 有以下程序
void fun(int *a,int i,int j)
{ int t;
if(i
{ t=a[i];a[i]=a[j];a[j]=t;
fun(a,++i,--j);
}
}
main()
{ int a[]={1,2,3,4,5,6},i;
fun(a,0,5)
for(i=0;i<6;i++)
printf("%d",a[i]);
}
執行後的輸出結果是
A.6 5 4 3 2 1
B.4 3 2 1 5 6
C.4 5 6 1 2 3
D.1 2 3 4 5 6
(44) 有以下程序
main(int arge,char *argv[])
{ int n,i=0;
while(arv[1][i]!='\0'
{ n=fun(); i++;}
printf(%d\n",n*arg
C.;
}
int fun()
{ static int s=0;
s+=1;
return s;
}
假設程序經編譯、連接後生成可執行文件exam.exe,若鍵入以下命令行
exam 123<回車>
則運行結果為
A.6
B.8
C.3 D)4
(45) 以下程序段中,能夠通過調用函數fun,使main函數中的指針變數p指向一個合法的整型單元的是
A.main()
B.main
{ int *p; { int *p;
fun(p); fun(&p);
}
}
int fun(int *p) int fun(int **p)
{ int s; p=&s;} { int s;*p=&s;}
C.#include
D.#include
main() main()
{ int *p; { int *p;
fun(&p); fun(p);
} }
int fun(int **p) int fun(int *p)
{ *p=(int *)malloc(2);} { p=(int *)malloc(sizeo(int));}
(46) 若要說明一個類型名STP,使得定義語句STP s等價於char *s,以下選項中正確的是
A.typedef STP char *s;
B.typedef *char STP;
C.typedef stp *char;
D.typedef char* STP;
(47) 設有如下定義
struct ss
{ char name[10];
int age;
char sex;
}std[3],*p=std;
下面各輸入語句中錯誤的是
A.scanf("%d",&(*p).age);
B.scanf("%s",&std.name);
C.scanf("%c",&std[0].sex)
D.scanf("%c",&(p->sex));
(48) 設char型變數x中的值為10100111,則表達式(2+x)^(~3)的值是
A.10101001
B.10101000
C.11111101
D.01010101
(49) 以下敘述中不正確的是
A.C語言中的文本文件以ASCⅡ碼形式存儲數據
B.C語言中對二進制文件的訪問速度比文本文件快
C.C語言中,隨機讀寫方式不適用於文本文件
D.C語言中,順序讀寫方式不適用於二進制文件
(50) 以下程序企圖把從終端輸入的字元輸出到名為abc.txt的文件中,直到從終端讀入字元#號時結束輸入和輸出操作,但程序有錯。
#include
main()
{ FILE *fout; char ch;
fout=fopen('abc.txt','w');
ch=fgetc(stdin);
while(ch!='#')
{ fputc(ch,fout);
ch=fgetc(stdin);
}
fclose(fout);
}
出錯的原因是
A.函數fopen調用形式錯誤
B.輸入文件沒有關閉
C.函數fgetc調用形式錯誤
D.文件指針stdin沒有定義
(42) 有以下程序
main()
{ int a[][3]={{1,2,3},{4,5,0}},{*pa}[3],i;
pa=a;
for(i=0;i<3;i++)
if(i<2) pa[1][i]=pa[1][i]-1;
else pa[1][i]=1;
printf("%d\n",a[0][1]+a[1][1]+a[1][2]);
}
執行後輸出結果是
A.7
B.6
C.8
D.無確定值
(43) 有以下程序
void fun(int *a,int i,int j)
{ int t;
if(i<J)
{ t=a[i];a[i]=a[j];a[j]=t;
fun(a,++i,--j);
}
}
main()
{ int a[]={1,2,3,4,5,6},i;
fun(a,0,5)
for(i=0;i<6;i++)
printf("%d",a[i]);
}
執行後的輸出結果是
A.6 5 4 3 2 1
B.4 3 2 1 5 6
C.4 5 6 1 2 3
D.1 2 3 4 5 6
(44) 有以下程序
main(int arge,char *argv[])
{ int n,i=0;
while(arv[1][i]!='\0'
{ n=fun(); i++;}
printf(%d\n",n*argc);
}
int fun()
{ static int s=0;
s+=1;
return s;
}
假設程序經編譯、連接後生成可執行文件exam.exe,若鍵入以下命令行
exam 123<回車>
則運行結果為
A.6
B.8
C.3
D.4
(45) 以下程序段中,能夠通過調用函數fun,使main函數中的指針變數p指向一個合法的整型單元的是
A) main() B) main
{ int *p; { int *p;
fun(p); fun(&p);
}
}
int fun(int *p) int fun(int **p)
{ int s; p=&s;} { int s;*p=&s;}
C) #include D) #include
main() main()
{ int *p; { int *p;
fun(&p); fun(p);
} }
int fun(int **p) int fun(int *p)
{ *p=(int *)malloc(2);} { p=(int *)malloc(sizeo(int));}
(46) 若要說明一個類型名STP,使得定義語句STP s等價於char *s,以下選項中正確的是
A.typedef STP char *s;
B.typedef *char STP;
C.typedef stp *char;
D.typedef char* STP;
(47) 設有如下定義
struct ss
{ char name[10];
int age;
char sex;
}std[3],*p=std;
下面各輸入語句中錯誤的是
A.scanf("%d",&(*p).age);
B.scanf("%s",&std.name);
C.scanf("%c",&std[0].sex)
D.scanf("%c",&(p->sex));
(48) 設char型變數x中的值為10100111,則表達式(2+x)^(~3)的值是
A.10101001
B.10101000
C. 11111101
D.01010101
(49) 以下敘述中不正確的是
A.C語言中的文本文件以ASCⅡ碼形式存儲數據
B.C語言中對二進制文件的訪問速度比文本文件快
C.C語言中,隨機讀寫方式不適用於文本文件
D.C語言中,順序讀寫方式不適用於二進制文件
(50) 以下程序企圖把從終端輸入的字元輸出到名為abc.txt的文件中,直到從終端讀入字元#號時結束輸入和輸出操作,但程序有錯。
#include
main()
{ FILE *fout; char ch;
fout=fopen('abc.txt','w');
ch=fgetc(stdin);
while(ch!='#')
{ fputc(ch,fout);
ch=fgetc(stdin);
}
fclose(fout);
}
出錯的原因是
A.函數fopen調用形式錯誤
B.輸入文件沒有關閉
C.函數fgetc調用形式錯誤
D.文件指針stdin沒有定義
二、填空題(每空2分,共20分)
請將每空的正確答案寫在答題卡上【1】-【20】序號的橫線上,答在試卷上不得分。
(1) 用十六進制繪存儲器中的位元組地址進行編號,若地址編號從000到FFFF,則該存諸器的容量為【1】KB。
(2) 假設在當前盤的當前目錄下有兩個文件A.TXT和B.TXT,現要將文件B.TXT合並連接到文件A.TXT的後面。若使用COPY命令,則完整的命令為【2】。
(3) E-mail地址由用戶和域名兩部分組成,這兩部分的分隔符為【3】。
(4) 假設在當前盤當前目錄下有一個可執行程序USER.EXE。現要執行該程序,並要求在執行過程中將顯示輸出的結果信息存入當前盤當前目錄的文件OUT.DAT中,則完整的DOS命令為【4】。
(5) 在DOS環境下,表示列印機的設備文件名為【5】 。
(6) 若有語句
int i=-19,j=i%4;
printf("%d\n",j);
則輸出結果是【6】。
(7) 若有程序
main()
{ int i,j;
scanf("i=%d,j=%d";&i,&j);
printf("i=%d,j=%d\n",i,j);
}
要求給i賦10,給j賦20,則應該從鍵盤輸入【7】。
(8) 若有以下程序
main()
{ int p,a=5;
if(p=a!=0)
printf("%d\n",p);
else
printf("%d\n",p+2);
}
執行後輸出結果是【8】。
(9) 若有以下程序
main()
{ int a=4,b=3,c=5,t=0;
if(a
if(a
printf("%d %d %d\n",a,b,c);
}
執行後輸出結果是 【9】 。
(10) 若有以下程序
main()
{ int a[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}};
int i,j,s=0;
for(i=0;i<4;i++)
{ for(j=0;j<4;j++)
{ if(a[i][j]<0)continue;
if(a[i][j]==0)break;
s+=a[i][j];
}
}
printf("%d\n",s);
}
執行後輸出的結果是【10】。
(11) 若有以下程序
main()
{ char a;
a='H'-'A'+'0';
print("%c\n",a);
}
執行後的輸出結果是 【11】 。
(12) 若有以下程序
int f(int x,int y)
{ return(y-x)*x; }
main()
{ int a=3,b=4,c=5,d;
d=f(f(3,4),f(3,5));
printf("%d\n",d);
}
執行後輸出的結果是【12】。
(13) 函數YangHui的功能是把楊輝三角形的數據賦給二維數組的下半三角,形式如下
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
其構成規律是:
第0列元素和主對角線無素均為1
其餘元素為其左上方和正上方元素之和
數據的個數每行遞增1
請將程序補充完整。
#defint N 6
void YangHui(int *[N][N])
{ int i,j;
x[0][0]=1
for(i=1;i<N;I++)
{ x[i][0]= 【13】 =1;
for(j=1;j<I;J++)
x[i][j]= 【14】 ;
}
}
(14) 以下函數的功能是刪除字元串s中的所有數字字元。請填空。
void dele(char *s)
{ int n=0,i;
for(i=0,s[i];i++)
if(【15】)
s[n++]=s[i];
s[n]=【16】;
}
(15) 設函數findbig已定義為求3個數中的最大值。以下程序將利用函數指針調用findbig函數。請填空。
main()
{ int findbig(int,int,int);
int (*f)(),x,yz,z,big;
f=【17】;
scanf("%d%d%d",&x,&y,&z);
big=(*f)(x,y,z);
printf("bing=%d\n",big);
}
(16) 以下程序的輸出結果是【18】 。
#defint MCRA(m) 2*m
#define MCRB(n,m) 2*MCRA(n)+m
main()
{ int i=2,j=3;
printf("%d\n",MCRB(j,MCRA(i)));
}
(17) 設有以下定義
struct ss
{ int info;struct ss *link;}x,y,z;
且已建立如下圖所示鏈表結構:
□□ →□□→□□
X Y Z
請寫出刪除點y的賦值語句【19】 。
(18) 已有文本文件test.txt,其中的內容為:Hello,everyone!。以下程序中,文件test.txt已正確為"讀"而打開,由文件指針fr指向該文件,則程序的輸出結果是 【20】 。
#include
main()
{ FILE *fr; char str[40];
……
fgets(str,5,fr);
printf("%s\n",str);
fclose(fr);
}
全國計算機等級考試二級C筆試答案
一、選擇題
1-5:CDDAD 6-10:BACDB 11-15:CABDB 16-20:ADCAA
21-25:CBDAB 26-30:DCDAB 31-35:CBDCC 36-40:CCBAC
41-45:CAAAC 46-50:DBDDA
二、填空題
(1) 64
(2) COPY A.TXT+B.TXT A.TXT
(3) @
(4) USER >OUT.DAT
(5) PRN或LPT1或LPT2
(6) -3
(7) i=10,j=20
(8) 1
(9) 5 0 3
(10) 58
(11) 7
(12) 9
(13) x[i][i]和x[i-1][j-1]+x[i-1][j]
(14) !(s[i]>='0'&&s[i]<='9')和'\0'
(15) findbig
(16) 16
(17) x.link=y.link;
(18) Hell

⑸ C語言模擬題

一.選擇題:
1.B 2.D 3.A 4.B 5.D 6.B 7.B 8.A
二.讀程序:
1. 67,D 2. 3 3. 3 4. 3

⑹ C語言編程,這是個模擬題

#include"stdio.h"
intfun(longn,longa[]){
intx,y,z,i=0;
while(a[i++]=n,n!=123){
(x=y=z=0;n;n%10&1?y++:x++,z++,n/=10);
n=x?x*100+y*10+z:y*100+x*10+z;
}
returni;
}
intmain(intargv,char*argc[]){
longn,a[10],i;
FILE*fp;
printf("Inputn(int0<n<1000000000)... n=");
if(scanf("%d",&n)!=1||n<1||n>999999999){
printf("Inputerror,exit... ");
return0;
}
if((fp=fopen("myf2.out","w"))==NULL){
printf("Createthefilefailure... ");
return0;
}
for(n=fun(n,a),i=0;i<n;i++){
printf(i?",%d":"%d",a[i]);
fprintf(fp,(i?"%d":"%d"),a[i]);
}
printf(" ");
fprintf(fp,"%s"," Myexamnumberis:ID883929 ");
fclose(fp);
return0;
}

運行樣例:

⑺ c語言二級模擬題

上面代碼中,dt[0].x=1;dt[0].y=2;dt[1].x=3;dt[1].y=3

因為*p=dt

所以p實際是指向數組dt的首地址的,也就是dt[0]的地址;

所以p->x就是dt[0].x;所以p->y就是dt[0].y

即p->x=dt[0].x=1;p->y=dt[0].y=2;

++(p->x)=2;++(p->y)=3

以上是個人理解,有問題可繼續交流。