一、程序设计初步
(一)题4.输入n,计算s=1+1+2+1+2+3+1+2+3+4+...+1+2+3+4+...+n (一)题5.编制统计营业员一天的营业额的程序 (一)题6.翻译输入的字符序列
(一)题4.输入n,计算s=1+1+2+1+2+3+1+2+3+4+...+1+2+3+4+...+n 解: 算式是以下形式的n项和: 1+(1+2)+(1+2+3)+...+(1+2+3+...+n) 设i-1项的值是p,则i项的值是p+i。初始时,s为0,p也为0,顺序地将整数i=1,2,3,...n累计到变量p,并每次将新的p 值累计到变量s,则最后s就是算式的结果。 算法如下: s=1+2+1+2+3+1+2+3+4+...+1+2+3+...+n { 输入n; 为变量p和s设定初值0; for(i=1;i<=n;i++) { 将i累计到p; 将p累计到s; } 输出s; } 其中变量p和s设定初值可写在for的控制结构中,将i累计到p和将p累计到s可写成C语言的语句: s+=p+=i. 程序代码如下: #include<stdio.h> void main() { int i,s,p,n; printf("Enter n!\n"); scanf("%d",&n); for(s=p=0,i=1;i<=n;i++) s+=p+=i; /*将i累计到p,并将p 累计到s*/ printf("S= %d\n",s); }
------------------------------------------------
(一)题5.编制统计营业员一天的营业额的程序 解: 设程序采用一个循环实现,每次循环输入一笔交易金额并累计营业额。由于营业员一天完成的交易次数是不确定的,为此以最后附加输入一笔0或负数交易额作为交易金额已全部输入结束的标志。 有以下统计营业员一天营业额的算法: 统计营业员一天营业额 { 营业额清0; 输入第一笔交易额; while(交易额>0.0) { 累计营业额; 输入下一笔交易额; } 输出营业额; } 记一笔交易额为变量sale,营业额为sigma。 程序代码如下: #include<stdio.h> void main() { float sale,sigma; sigma=0.0; printf("Enter sale data.\n"); scanf("%f",&sale); while(sale>0.0) { sigma+=sale; printf("Enter next sale data(<=0 to finish).\n"); scanf("%f",&sale); } printf("Sigma of sale is %.2f\n",sigma); }
-----------------------------------------
(一)题6.输入字符序列,字符序列以非凡字符“#”结束。程序从前向后依次读入字符,并翻译出新的字符输出。翻译的规则是:假如当前读入的字符是数字符,假如该字符的面值为n,则它的后一个字符(包括数字符)需重复输出n+1次假如当前读入的字符不是数字符,则输出该字符。输出时,以上述一次翻译为一组,不同组间输出用一个空白字符隔开。翻译直至当前读入的字符为字符'#',结束翻译和输出。 解: 程序从前向后依次读入字符,并翻译输出新的字符输出是一个循环过程,当前读入的字符分数字字符和非数字字符两类。假如当前读入的字符是数字符n,翻译规则要求它的后一个输入字符需重复输出n+1次;假如当前读入的字符不是数字符,则输出该字符。 算法如下: 字符列翻译 { 读入当前字符; while(当前字符!='#') { if(当前字符是数字符) { 由当前字符算出后继字符重复输出的次数; 输入后继字符; 按计算所得次数重复输出后继字符; } else 输出当前字符 输出一个空白符; 输入下一个当前字符; } 输出字符'#'和换行符 }
假定读入的当前字符存于变量ch,若该字符是数字符,则其面值为ch-'0',即当前字符的ASCII码减去字符'0'的ASCII码。所以后继字符重复输出的次数为ch-'0'+1。字符ch是数字符,可有条件表达式(ch>='0'&&ch<='9')为非零确定,即当前字符的ASCII码大于等于字符'0'的ASCII码,且小于等于字符'9'的ASCII码。 对应该算法的程序如下: #include<stdio.h> void main() { char ch,nch; /*当前字符和后继字符*/ int count; /*后继字符重复输出的次数*/ int k; /*工作变量*/ printf("Enter string.\n"); scanf("%c",&ch); /*读入当前字符*/ while(ch!='#') /*当前字符不等于字符'#',重复*/ { if(ch>='0'&&ch<='9') /*当前字符是数字符*/ { count=ch-'0'+1; /*后继字符重复输出的次数*/ scanf("%c",&nch); /*输入后继字符*/ for(k=0;k<count;k++) /*重复输出后继字符count次*/ printf("%c",nch); } else printf("%c",ch); /*输出当前字符*/ printf(" "); /*输出一个空白符*/ scanf("%c",&ch); /*输入下一个当前字符*/ } printf("#\n"); /*输出字符'#'和换行符*/ }
视频教程列表
文章教程搜索
C语言程序设计推荐教程
C语言程序设计热门教程
|