1.输入一个字符,判断该字符是数字、字母、空格还是其他字符。
main(){char ch;
ch=getchar();if( ch>=’a’&&ch<=’z’|| ch>=’A’&&ch<=’Z’ )printf("It is an English character\n");elseif( ch>=’0’&&ch<=’9’ )printf("It is a digit character\n");elseif( ch== ‘ ’ )printf("It is a space character\n");elseprintf("It is other character\n");}
第1空:字符在计算机中以ASCII码的形式存储。所以当输入的字符,即ch中字符所对应的ASCII码的范围在英文字母的ASCII码的范围内即可,参照p377。由于英文字母又分为大写字母和小写字母,因此此处用一个逻辑或表达式,表示ch中是小写字母或者大写字母,都能使得表达式成立。ch>=97&&ch<=122|| ch>=65&&ch<=90
需要注意的是,对于本题区间所对应的表达式,不可写作97<=ch<=122,也不可写作’A’<=ch <=’Z’. 对于97<=ch<=122因为在计算此表达式时的顺序是从左向右,因此先计算97<=ch。无论ch中的取值如何,表达式97<=ch的值只有两种情况:0或1.所以无论是0还是1,都小于122,因此97<=ch<=122恒成立。
第3空,判断ch中是否为空格,也是通过ch中字符与空格字符的ASCII码来判断。在判断表达式的值是否相等时,用关系符号==;不要用赋值符号=。
2.下列程序的功能是从输入的整数中,统计大于零的整数个数和小于零的整数个数。用输入0来结束输入,用i,j来放统计数,请填空完成程序。
voidmain(){int n,i=0,j=0;printf(“input a integer,0for end\n”);scanf(“%d”,&n);while( n或n!=0){if(n>0) i= i+1;else j=j+1;}printf(“i=%4d,j=%4d\n”,i,j);}
此题用i来记录大于零的整数,用j记录小于零的整数。所以循环条件是n(或者n!=0)即当n不为0时执行循环体。在循环体中是一个选择语句。如果n>0,则令i加1,相当于令正整数的个数加1;否则(即n<0),令j加1,相当于令负整数的个数加1。
3.编程计算1+3+5+……+101的值
#include<stdio.h>voidmain(){int i, sum =0;for(i =1; i<=101; i=i+2;)
sum = sum + i;printf("sum=%d\n", sum);}for语句的一般形式详见p120.
表达式1为i =1,为循环变量赋初值,即循环从1开始,本题从1到101,因此终值是101,表达式2是循环条件,用来控制循环的结束,因此循环条件为i<=101;表达式3为循环变量的自增,本题是
4.编程计算1+3+5…+99的值
main(){int i, sum =0;
i=1;while( i<100){ sum = sum + i;
I=i+2;}printf("sum=%d\n", sum);}5.从键盘输入一个字符,判断它是否是英文字母。
#include<stdio.h>voidmain(){char c;printf("input a character:");
c=getchar();if(c>= ‘A’ &&c<= ‘Z’ || c>=‘a’ &&c<= ‘z’)printf("Yes\n");elseprintf("No");}6. 下面程序的功能是在a数组中查找与x值相同的元素所在位置,请填空。
#include <stdio.h>voidmain(){int a[10],i,x;printf(“input 10 integers:”);for(i=0;i<10;i++)scanf(“%d”,&a[i]);printf(“input the number you want to find x:”);scanf(“%d”,&x );for(i=0;i<10;i++)if( x==a[i])break;if( i<10)printf(“the pos of x is:%d\n”,i);elseprintf(“can not find x!\n”);}7.程序读入20个整数,统计非负数个数,并计算非负数之和。
#include<stdio.h>main(){int i, a[20], s, count;
s=count=0;for(i=0; i<20; i++)scanf(“%d”,&a[i]);for(i=0; i<20; i++){if( a[i]<0)continue;
s+=a[i];
count++;}printf(“s=%d\t count=%d\n”, s, count”);}8. 输入一个正整数n(1<n≤10),再输入n个整数,用选择法将它们从小到大排序后输出。
#include<stdio.h>intmain(void){int i, index, k, n, temp;int a[10];/* 定义1个数组a,它有10个整型元素*/printf(“Enter n: ");scanf(“%d”,&n);printf(“Enter %d integers: ", n);for(i =0; i < n; i++)scanf("%d",&a[i]);for(k =0; k < n-1; k++){/* 对n个数排序 */
index = k;for(int I = index +1; I < n ; i++)if( a[index]>a[i];) index = i;
a[k]=a[index];}printf("After sorted: ");for(i =0; i < n; i++)/* 输出n个数组元素的值 */printf(“%d”,a[i]);return0;}