生活随笔
收集整理的這篇文章主要介紹了
全国计算机等级考试题库二级C操作题100套(第30套)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
第30套:
程序通過定義學生結構體變量,存儲了學生的學號、姓名和3門課的成績。函數fun的功能是將形參a所指結構體變量中的數據賦給函數中的結構體變量b,并修改b中的學號和姓名,最后輸出修改后的數據。例如:a所指變量中的學號、姓名、和三門課的成績依次是:10001、“ZhangSan”、95、80、88,則修改后輸出b中的數據應為:10002、“LiSi”、95、80、88。請在程序的下劃線處填入正確的內容并把下劃線刪除, 使程序得出正確的結果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結構!
給定源程序:
#include <stdio.h>
#include <string.h>
struct student
{
long sno
;
char name
[10];
float score
[3];
};
void fun(struct student a
)
{ struct student b
; int i
;
b
= __1__
;
b
.sno
= 10002;
strcpy(__2__
, "LiSi");
printf("\nThe data after modified :\n");
printf("\nNo: %ld Name: %s\nScores: ",b
.sno
, b
.name
);
for (i
=0; i
<3; i
++) printf("%6.2f ", b
.__3__
);
printf("\n");
}
main()
{ struct student s
={10001,"ZhangSan", 95, 80, 88};
int i
;
printf("\n\nThe original data :\n");
printf("\nNo: %ld Name: %s\nScores: ",s
.sno
, s
.name
);
for (i
=0; i
<3; i
++) printf("%6.2f ", s
.score
[i
]);
printf("\n");
fun(s
);
}
解題思路:
本題是對結構體變量中的值進行修改。
第一處:要修改的結構體變量是由形參a來傳遞的,所以應填:a。
第二處:對結構體中的成員name進行替換,所以應填:b.name。
第三處:分別輸出結構體中的成績,所以應填:score[i]。
給定程序MODI1.C中函數fun的功能是:從s所指字符串中刪除所有小寫字母c。
請改正程序中的錯誤,使它能計算出正確的結果。
注意:不要改動 main 函數,不得增行或刪行,也不得更改程序的結構!
給定源程序:
#include <stdio.h>
void fun( char *s
)
{ int i
,j
;
for(i
=j
=0; s
[i
]!='\0'; i
++)
if(s
[i
]!='c')
s
[j
]=s
[i
];
s
[i
]='\0';
}
main()
{ char s
[80];
printf("Enter a string: "); gets(s
);
printf("The original string: "); puts(s
);
fun(s
);
printf("The string after deleted : "); puts(s
);printf("\n\n");
}
解題思路:
第一處: 新字符串的位置值是由變量j來控制的,但程序中字符賦值后沒有對j進行增量的語句,所以應改為:s[j++]=s[i];。
第二處: 對新字符串添加字符串結束符,由于程序中使用變量j對新字符串來控制的,所以應改為:s[j]=0;。
假定輸入的字符串中只包含字母和號。請編寫函數fun,它的功能是:將字 符串中的前導號全部移到字符串的尾部。函數fun中給出的語句僅供參考。
例如,字符串中的內容為:ABCDEFG,移動后,字符串中的內
容應當是:ABCDEF*G***********。在編寫函數時, 不得使用C語言提供的字符串函數。
注意: 部分源程序在文件PROG1.C文件中。
請勿改動主函數main和其它函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。
給定源程序:
#include <stdio.h>
void fun( char *a
)
{
char *p
,*q
;
int n
=0;
p
=a
;
while(*p
=='*')
{n
++; p
++;}
q
=a
;
for(;n
>0;n
--)
*q
++='*';
*q
='\0';
}
main()
{ char s
[81],*p
; int n
=0;
printf("Enter a string:\n");gets(s
);
fun( s
);
printf("The string after moveing:\n");puts(s
);
NONO();
}
解題思路:
本題是考察字符串的移動。具體操作請看參考源程序。
參考答案:
void fun( char *a
)
{
char *p
,*q
;
int n
=0;
p
=a
;
while(*p
=='*')
{n
++; p
++;}
q
=a
;
while(*p
) {
*q
=*p
;
p
++;q
++;
}
for(;n
>0;n
--)
*q
++='*';
*q
='\0';
}
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔為你收集整理的全国计算机等级考试题库二级C操作题100套(第30套)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。