{ char curChar, nextChar;
printf(\while ((curChar = getchar()) != 'Y') { switch (curChar) { case 'M': printf(\ break; case 'W': printf(\ break; case 'F': printf(\ break; case 'T': nextChar = getchar(); if ('u' == nextChar) { printf(\ } else if ('h' == nextChar) { printf(\ } else { printf(\ ungetc(nextChar, stdin); } break; case 'S': nextChar = getchar(); if ('a' == nextChar) { printf(\ } else if ('u' == nextChar) {
printf(\
//将多读的字符放回去
} else { printf(\ ungetc(nextChar, stdin); } break; default: printf(\ } } return 0; }
编写一程序P715.C实现以下功能
如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,则称之为“完数”,例如6的因子是1,2,3,且6=1+2+3,因此6是完数。编写程序,输入数据范围,输出该范围之内的所有完数及其个数。编程可用素材:printf(\、printf(\。
程序的运行效果应类似地如图1所示,图1中的10 2000是从键盘输入的内容。 编写一程序P771.C实现以下功能 编程在一个已知的字符串(约定:字符数≤127字节)中查找最长单词,输出最长单词的长度。
注意事项:
(1)只考虑输入的字符串中仅含空格和其它可见字符,仅用空格用来分隔不同单词。 (2)字符串中可能只有1个单词。
(3)字符串中可能1个单词都没有,此时最长单词的长度为0。 (4)编程可用素材:printf(\、printf(\。
程序的运行效果应类似地如图1所示,图1中的hello welcome to chengdu-CUIT是从键盘输入的内容。 #include
int main(void) { int data1, data2, i, j, Sum, Count=0, maxDiv; printf(\ scanf(\ for (i=data1; i<=data2; i++) { Sum = 0;
maxDiv = i / 2; for (j=1; j<=maxDiv; j++) { if (i % j == 0) { Sum += j; } } if (Sum == i) { printf(\ Count++; } } printf(\ return 0; }
编写一程序P773.C实现以下功能
计算两个日期之间的天数。注:判断年份是否为闰年的方法——为400的倍数为闰年,如2000年;若非100的倍数,而是4的倍数,为闰年,如1996年。编程可用素材:printf(\、printf(\、printf(\。
程序的运行效果应类似地如图1和图2所示,图1中的2008/02/13、2010/04/24和图2中的2010/04/24、2008/02/13是从键盘输入的内容。 #include
int sumDays(int year, int month, int day);
int main(void) { int year1, year2, month1, month2, day1, day2; /* 提示用户输入日期1和日期2并读入 */ printf(\ scanf(\ printf(\ scanf(\ /* 调用函数计算起止日期间的天数并按题目要求的格式输出: 间隔天数=两个日期公元记年的天数之差的绝对值 */ printf(\abs(sumDays(year1, month1, day1) - sumDays(year2, month2,
day2))); return 0; }
/* 函数sumDays的功能是计算指定日期是公元记年以来的第几天 参数: year、month、day分别是指定日期的年、月、日 返回值:指定日期是公元记年以来的天数 */ int sumDays(int year, int month, int day) { int i; int dayOfMon[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; long sum = 0; //存储公元记年以来的天数 /* 计算从公元第1年开始到指定日期的前一年的天数 */ for (i=1; i
编写一程序P825.C实现以下功能 从键盘读入一个长整型数,若该数不在0~2147483647范围内则要求重输,直到符合要求。然后将该数转换成大写的金额输出(大写的数字是:零,壹,贰,叁,肆,伍,陆,柒,捌,玖,拾,佰,仟,万,亿)。编程可用素材:printf(\请输入一个整数:\、printf(\数据错误,请重新输入:\、printf(\转换后的结果是:...。 程序的运行效果应类似地如图1、图2、图3、图4和图5所示,图1中的1234567891、图2中的2147485647,-10,10023、图3中的1000、图4中的10和图5中的0是从键盘输入的内容。
#include
#include
#define MAX 2147483647
int main(void) { long nNumber; int i=0, nDigit; char *strPlace[20], strResult[1000]=\ char *strNum[] = {\零\壹\贰\叁\肆\伍\陆\柒\捌\玖\ char *str[] = {\元整\拾\佰\仟\万\拾\佰\仟\亿\拾\佰\仟\ printf(\请输入一个整数:\ do { scanf(\ if (nNumber>MAX || nNumber<0) { printf(\数据错误,请重新输入:\ } } while (nNumber>MAX || nNumber<0); do { strPlace[i] = strNum[nNumber % 10]; nNumber = nNumber / 10; i++; } while (nNumber > 0); nDigit = i; for (i=nDigit-1; i>=0; i--) { strcat(strResult, strPlace[i]); strcat(strResult, str[i]); } printf(\转换后的结果是: %s\\n\ return 0; }
编写一程序P211.C实现以下功能
根据输入的n在屏幕上显示对应的以#组成的菱形图案。编程可用素材:printf(\。
程序的运行效果应类似地如图1和图2所示,图1中的1和图2中的5是从键盘输入的内容。