5-1
语句填空:下列 for循环语句将输出: 0 1 2 0 1 2 0 1 2
for( i=1; i<=9; i++ )
printf(“%2d”, (i-1)%3);
5-2
执行以下程序段,输入12-78.5,输出78.5-12。
int n;
double x;
scanf(“%d-%lf”,&n,&x);;
printf(“%.1f-%d\n”, x, n);
5-3
表达式求值:
当a=1,b=2,c=3时,打印语句printf(“%d#%d#”,(a, b), a>b?(c=4):(c=5))的输出是__2#5#____。
5-4
执行以下程序段,输入3,输出(3)。
char ch;
scanf(“%c”,&ch);
putchar(‘(’);
printf(“%c”,ch);
putchar(‘)’);
5-5
输入一个正整数n,再输入n个字符,将这些字符输出,输出时在字符之间加一个空格,最后一个字符的后面没有空格。
输入格式:
在第1行输入一个正整数n
在第2行输入n个字符
输出格式:
在一行内输出n个字符,请注意:字符之间有一个空格,最后一个字符的后面没有空格。
输入样例:
5
Happy
输出样例:
H a p p y
#include <stdio.h>
int main()
{
char ch;
int first = 1, k, n;
scanf("%d\n", &n);
for(k = 1; k <= n; k++){
ch=getchar();
if ( first == 1){
putchar(ch);
first+=1;
}else{
printf(" ");
putchar(ch);
}
}
return 0;
}
5-9
本题完成如下求解:
设现在时针指向8点,那么t(t>0)小时后时针指向的点数。
#include <stdio.h>
int main()
{
int t,b;
scanf(“%d”,&t);
b=(8+t-1)%12+1;
printf(“%d”,b);
return 0;
}
//不用(8+t)%12,避免出现指针指向0。t=4时 ,是12点,但是输出0
5-10
输入一个2位数a,计算出它的2位数字之和赋值给b
#include <stdio.h>
int main()
{
int a,b;
scanf(“%d”,&a);
b=(a%10)+(a/10);
printf(“%d”,b);
return 0;
}
5-11
输入某年某月某日,判断这一天是这一年的第几天?
#include <stdio.h>
int main(){
int year,month,day;
int sum;
int leap;
int T;
scanf("%d",&T);
while(T--) {
scanf("%d %d %d",&year,&month,&day);
switch(month) {
case 1:
sum=0;
break;
case 2:
sum=31;
break;
case 3:
sum=59;
break;
case 4:
sum=89;
break;
case 5:
sum=120;
break;
case 6:
sum=151;
break;
case 7:
sum=181;
break;
case 8:
sum=212;
break;
case 9:
sum=243;
break;
case 10:
sum=273;
break;
case 11:
sum=304;
break;
case 12:
sum=334;
break;
default:
printf("data error");
break;
}
sum+= day;
if(year%400==0|| (year%4==0&&year%100!=0))
leap=1;
else
leap=0;
if((leap == 1)&&(month>2&&month<=12)) sum++;
printf("It is the %dth day.",sum);
}
return 0;
}
5-12
计算分段函数,测试数据分别是-2、3、7。
#include <stdio.h>
#include<math.h>
int main( )
{ float x,f;
int i;
for (i=0; i<3; i++) {
scanf("%f",&x);
if(x<0)
f=fabs(x+1);
else if(x>=0&&x<=5) f=2*x+1;
else f=sin(x)+5;
printf("x=%.2f,y=%.2f\n",x,f);
}
return 0;
}
5-13
以下程序统计输入的一行字符中字母、数字、空格、其它字符的个数(行末以换行符结束,最后的换行符不统计在内)。例如,输入的一行字符为aB 3*则字母有2个,数字有1个,空格有1个,其它字符有1个。
提示:1、填写的代码要确保程序可以正确编译、运行得出结果;2、空格之后的括号里注明了分数,该括号不属于代码部分。
#include <stdio.h>
int main(){
int letters, digits, spaces, others;
letters=0,digits=0,spaces=0,others=0;
char ch;
while(
ch=getchar(),ch!='\n'){
if( (ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z') )
letters++;
else if( ch>='0'&&ch<='9')
digits++;
else if( ch==' ')
spaces++;
else
others++;
}
printf("字母、数字、空格、其它字符分别有:%d %d %d%d 个\n",letters,digits,spaces,others);}
5-14
理解switch语句。
下列程序段将输出__2#3#___。
unsigned char x=255,y=‘\1’;
switch(!!x) {
case 0: printf(“0#”);break;
case 1:
switch(y) {
case 0: printf(“1#”);break;
case 1: printf(“2#”);break;
}
default: printf(“3#”);
}
5-15
输入年月日,输出该日是今年第几天?
#include<stdio.h>
int main()
{
int i, year, month, day, days;
scanf(“%d%d%d”, &year, &month, &day);
days=fun(year,month,day);
printf(“%d”, days);
return 0;
}
int fun(int year,int month,int day)
{
int days;
days=day;
switch(month-1)
{
case 11: days+=30;
case 10: days+=31;
case 9: days+=30;
case 8: days+=31;
case 7: days+=31;
case 6: days+=30;
case 5: days+=31;
case 4: days+=30;
case 3: days+=31;
case 2:
if(year%40&&year%100!=0||year%4000)
days+=29;
else
days+=28;
case 1:
days+=31;
}
return days;
}
5-16
写出与以下switch语句等价的else-if语句。
switch(op){
case ‘+’: printf(“%d\n”, value1 + value2); break;
case ‘-’: printf(“%d\n”, value1 - value2); break;
default: printf(“Error\n”); break;
}
if(op==‘+’){
printf(“%d\n”, value1 + value2);
}
else if(op==‘-’)
{
printf(“%d\n”, value1 - value2);
}else {
printf(“Error\n”);
}
5-17
写出与以下switch语句等价的else-if语句。
switch(op){
case ‘+’: printf(“%d\n”, value1 + value2);
case ‘-’: printf(“%d\n”, value1 - value2);
default: printf(“Error\n”);
}
if(op == ‘+’){
printf(“%d\n”,value1 + value2);
printf(“%d\n”, value1 - value2);
printf(“Error\n”);
}
else(op == ‘-’)
{
printf(“%d\n”, value1 - value2);
printf(“Error\n”);
}else {
printf(“Error\n”);
}
5-18
写出与以下switch语句等价的else-if语句。
switch (ch){
case ‘0’ : case ‘1’ : case ‘2’ : case ‘3’ : case ‘4’ :
case ‘-’:
minus++; break;
case ‘5’ : case ‘6’ : case ‘7’ : case ‘8’ : case ‘9’ :
digit ++;break;
default:
other ++; break;
}
if(ch==‘-’||(ch>=‘0’&&ch<=‘4’))
{
minus++;
}else if(ch>=‘5’&&ch<=‘9’)
{
digit ++;
}else {
other ++;
}
5-19
写出与以下switch语句等价的else-if语句。
switch (ch){
case ‘-’:
minus++; break;
case ‘0’ : case ‘1’ : case ‘2’ : case ‘3’ : case ‘4’ :
case ‘5’ : case ‘6’ : case ‘7’ : case ‘8’ : case ‘9’ :
digit ++;break;
default:
other ++; break;
}
if(ch==‘-’)
{
minus++;
}
else if(ch>=‘0’&&ch<=‘9’)
{
digit ++;
}
else
{
other ++;
}
5-20
输入3个整数,输出其中最大的数。
#include <stdio.h>
int main()
{
int a, b, c, max;
scanf("%d %d %d", &a, &b, &c);
max = 0;
if ( a > b ) {
if ( a > c ) {
max=a;
} else {
max=c;
}
} else {
if
(b>c)
{
max = b;
} else {
max=c;
}
}
printf("%d\n", max);
return 0;
}
5-21
在玩牌程序中,每一组牌用数字1〜13代表。输入数字,显示相应的牌。其中2〜10直接显示数字,而数字1、11、12、13则分别用Ace、Jack、Queen、King来表示。
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
if(n >= 1 && n <= 13){
switch (n){
case 1:
printf("Ace\n"); break;
case 11: printf("Jack\n"); break;
case 12:
printf("Queen\n"); break;
case 13: printf("King\n"); break;
default:
printf("%d\n",n); break;
}
}else{
printf("Error\n");
}
return 0;
}
这是一系列关于C语言的基础编程题目,包括输入输出、条件判断、循环语句、字符处理、数值计算等方面,旨在帮助初学者巩固基础知识。
4218

被折叠的 条评论
为什么被折叠?



