【www.guakaob.com--电子商务师】
输入三个整数,把第二个输入的整数输出篇一
《任意输入两个整数,输出它们的和》
本程序任意输入两个整数,输出它们的和。import javax.swing.JOptionPane;或者import javax.swing.*;public class B2{public static void main(String[] args) {int n1=Integer.parseInt(JOptionPane.showInputDialog("请输入第一个整数:"));或者 String s1=JOptionPane.showInputDialog("请输入第一个整数:");int n1=Integer.parseInt(s1);int n2=Integer.parseInt(JOptionPane.showInputDialog("请输入第二个整数:"))或者 String s2=JOptionPane.showInputDialog("请输入第二个整数:");int n2=Integer.parseInt(s2);JOptionPane.showMessageDialog(null,n1+"与"+n2+"的和是:"+(n1+n2));} }
输入三个整数,把第二个输入的整数输出篇二
《输入三个数,让它从大到小输出》
# include "stdio.h"
void main()
{
int a, b, c, t;
printf("请输入三个数:"); scanf("%d %d %d", &a, &b, &c);
if(a < b)
{
t = a;
a = b;
b = t;
}
if(a < c)
{
t = a;
a = c;
c = t;
}
if(b < c)
{
t = b;
b = c;
c = t;
}
printf("%d, %d, %d\n", a, b, c);
}
输入三个整数,把第二个输入的整数输出篇三
《设计一个程序,要求输入三个整数,能求出其中的最大数并输出。程序中必须用函数求出两个数中的大数。》
◆请在每次提交作业前完整填写下表
班 级 课 程 学 期 日 期
.net 1班 C++程序设计
20 11 -20 12 学年 第 一 学期 2011年10月12日星期二
学 号 12
学生姓名 授课教师 No
陆娟 任艳 第 4 次作业
作业内容:
1.设计一个程序,要求输入三个整数,能求出其中的最大数并输出。程序中必须用函数求出
两个数中的大数。 #include <iostream.h> int maxi(int a,int b) {return a>b?a:b;}
void main() { cout<<"请输入三个数:"<<endl; int x,y,z; cin>>x>>y>>z; cout<<"最大数为:"<<maxi(maxi(x,y),z)<<endl;
}
2.设计一个程序,计算组合数:C(m,r)=m!/(r!*(m-r)!),其中m,r为正整数,且m>r。分别求出
C(4,2)、C(6,4)、C(8,7)的组合数。求阶乘和组合数须用函数来实现。 #include <iostream.h>
int mul(int n) {
int i,s=1;
for(i=1;i<=n;i++) s*=i; return s; }
void main() { int m,r;
cout<<"请输入m,r的值:"<<endl; cin>>m; cin>>r; cout<<"m为:"<<m<<endl; cout<<"r为:"<<r<<endl; cout<<m<<"!="<<mul(m)<<endl; cout<<r<<"!="<<mul(r)<<endl;
cout<<(m-r)<<"!="<<mul(m-r)<<endl; cout<<"C(m,r)="<<mul(m)/(mul(r)*mul(m-r))<<endl;
}
3.设计一个程序,输入两个整数,求出这两个整数的最小公倍数。求两个数的最小公倍数用
一个函数来实现。 #include<iostream.h> int f(int a,int b) { int s; s=a*b;
for(int i=1;i<s;i++) { if(i%a==0 && i%b==0) break; } return i; }
void main() { int x,y;; }
cout<<"输入两个整数"<<endl; cin>>x>>y; f(x,y);
cout<<x<<"和"<<y<<"最小公倍数是"<<f(x,y)<<endl;
4.设计一个程序,输入两个整数,求出这两个整数的最大公约数。求两个数的最大公约数用
一个函数来实现。 #include <iostream.h> int f(int a,int b) { int t; while(b>0) { t=a%b; a=b;
b=t; } return a; }
void main () { int x,y; cout<<"输入两个整数"<<endl; cin>>x>>y; cout<<x<<"和"<<y<<"的两个最大公约数为"<<f(x,y)<<endl;
}
5.设计一个程序,通过重载求两个数中大数的函数max(x,y),分别实现求两个实数和两个整
数的大数。
#include <iostream.h> float max(float x,float y) { return(x>y?x:y); }
int max(int x,int y) { return(x>y?x:y); }
void main() { float a,b;
输入三个整数,把第二个输入的整数输出篇四
《编写程序,读入一个整数,显示该整数的所有素数因数。例如,输入整数为120,输出应为2、2、2、3、5.》
编写程序,读入一个整数,显示该整数的所有素数因数。例如,输入整数为120,输出应为2、2、2、3、5.
import java.util.Scanner;
public class Exercise2_39{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int i=sc.nextInt();
int m=i;
for(int j=2;j<=m/2;j++)
{
int k=j;
outer:
while(i%k==0)
{
System.out.println(k+" ");
i=i/k;
continue outer;
}
}
}
}
输入三个整数,把第二个输入的整数输出篇五
《c primer plus编程习题答案》
第一章 概览
编程练习
1.您刚刚被MacroMuscle有限公司(Software for Hard Bodies)聘用。该公司要进入欧洲市场,需要一个将英寸转换为厘米(1英寸=2.54
cm)的程序。他们希望建立的该程序可提示用户输入英寸值。您的工作是定义程序目标并设计该程序(编程过程的第1步和第2步)。
1.将英寸值转化为厘米值
2.显示“输入英寸值”->得到该值->转换为厘米值->存储->告知用户已结束
第二章 C语言概述
编程练习
1.编写一个程序,调用printf()函数在一行上输出您的名和姓,再调用一次printf()函数在两个单独的行上输出您的名和姓,然后调用一对printf()函数在一行上输出您的名和姓。输出应如下所示(当然里面要换成您的姓名):
Anton Bruckner
Anton
Bruckner
Anton Bruckner
第一个输出语句
第二个输出语句
仍然是第二个输出语句
第三个和第四个输出语句
#include<stdio.h>
int main(void)
{
printf("He Jin\n");
printf("He\n");
printf("Jin\n");
printf("He Jin\n");
return(0);
}
2.编写一个程序输出您的姓名及地址。
#include<stdio.h>
int main(void)
{
printf("Name:He Jin\n");
printf("Address:CAUC\n");
return(0);
}
3.编写一个程序,把您的年龄转换成天数并显示二者的值。不用考虑平年(
year)和闰年(leapyear)的问题。
#include<stdio.h>
int main(void)
{
int age=22;
printf("Age:%d\n",age);
printf("Day:%d\n",age*356);
return(0);
}
4.编写一个能够产生下面输出的程序:
For he's a jolly good fellow!fractional
For he's a jolly good fellow!
For he's a jolly good fellow!
Which nobody can deny!
程序中除了main()函数之外,要使用两个用户定义的函数:一个用于把上面的夸奖消息输出一次:另一个用于把最后一行输出一次。
#include<stdio.h>
void printf1(void);
void printf2(void);
int main(void)
{
printf1();
printf1();
printf1();
printf2();
return(0);
}
void printf1(void)
{
printf("For he's a jolly good fellow!\n");
}
void printf2(void)
{
printf("Which nobody can deny!\n");
}
5.编写一个程序,创建一个名为toes的整数变量。让程序把toes设置为10。再让程序计算两个toes的和以及toes的平方。程序应该输出所有的3个值,并分别标识它们。
#include<stdio.h>
int main(void)
{
int toes=10;
int toes_add;
int toes_square;
toes_add=toes+toes;
toes_square=toes*toes;
printf("toes=%d\ntoes_add=%d\ntoes_square=%d\n",toes,toes_add,toes_square);
return(0);
}
6.编写一个能够产生下列输出的程序:
Smile ! Smile ! Smile
Smile ! Smile !
Smile !
在程序中定义一个能显示字符串smile卜一次的函数,并在需要时使用该函数。
#include<stdio.h>
void display(void);
int main(void)
{
display();
display();
display();
printf("\n");
display();
display();
printf("\n");
display();
printf("\n");
return(0);
}
void display(void)
{
printf("Smile!");
}
7.编写一个程序,程序中要调用名为one_three()的函数。该函数要在一行中显示单词"one",再调用two
()函数,然后再在另一行中显示单词"three"。函数two()应该能在一行中显示单词"two"。main()函数应该在调用one_three()函数之前显示短语"starting
now:",函数调用之后要显示"done!"o这样,最后的输出结果应如下所示:
starting now
one
two
three
done !
#include<stdio.h>
void one_three(void);
void two(void);
int main(void)
{
printf("starting now:\n");
one_three();
printf("done!\n");
return(0);
}
void one_three(void)
{
printf("One\n");
two();
printf("Three\n");
}
void two(void)
{
printf("Two\n");
}
第三章 数据和C
输入三个整数,把第二个输入的整数输出篇六
《ACM第三次培训题目及答案》
2075 A|B?
2014 青年歌手大奖赛_评委会打分
2008 数值统计
2017 字符串统计
2020 绝对值排序
2006 求奇数的乘积
2005 第几天?
2015 偶数求和
输入三个整数,把第二个输入的整数输出篇七
《ACM简单例题》
鸡兔同笼查看文章 C程序设计基础-鸡兔同笼2009-10-26 18:12问题描述一个笼子里面关了鸡和兔子(鸡有 2 只脚,兔子有 4 只脚,没有例外)。已经知道了笼子里面脚的总数 a,问笼子里面至少有多少只动物,至多有多少只动物输入第 1 行是测试数据的组数 n,后面跟着 n 行输入。每组测试数据占 1 行,包括一个正整数 a (a < 32768)。输出n 行,每行输出对应一个输入。输出是两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用空格分开。如果没有满足要求的情况出现,则输出 2 个 0。输入样例2320输出样例0 05 10源代码:#include <stdio.h>void main( ){int n, i, nFeet; scanf("%d", &n);for(i = 0; i < n; i++){scanf("%d", &nFeet);if(nFeet %2 != 0) printf("0 0\n");else if (nFeet%4 != 0) printf("%d %d\n", nFeet / 4 + 1, nFeet / 2);else printf("%d %d\n", nFeet / 4, nFeet / 2);}}查看文章 C程序设计基础-评委会打分2009-10-30 19:18问题描述青年歌手大奖赛中,评委会给参赛选手打分。选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。输入输入数据有多组,每组占一行,每行的第一个数是n(2<n<100),表示评委的人数,然后是n个评委的打分。输出对于每组输入数据,输出选手的得分,结果保留2位小数,每组输出占一行。输入样例3 99 98 974 100 99 98 97输出样例98.0098.50源代码正确版本:#include <stdio.h>void main(){int n,i;float sum,ave,m,max,min;while((scanf("%d",&n))!=EOF){scanf("%f",&m);max=min=sum=m;for (i=1;i<n;i++){scanf("%f",&m);sum=sum+m;if (m>max){max=m;}else if (m<min) {min=m;}}ave=(sum-max-min)/(n-2);printf("%1.2f\n",ave);}}错误版本:#include <stdio.h>void main(){int n,i;float sum,ave,m,max,min;while((scanf("%d",&n))!=EOF){scanf("%f",&m);max=min=sum=m;for (i=1;i<n;i++){scanf("%f",&m);sum=sum+m;if (m>max){max=m;}else {min=m;}}ave=(sum-max-min)/(n-2);printf("%1.2f\n",ave);}}这是我第一次做该题时犯下的错误。该段程序中的if,else语句块存在逻辑错误,没有想清楚m值与最大值、最小值如何进行比较,就匆忙写代码。查看文章 C程序设计基础-多项式求和2009-10-30 19:24问题描述多项式的描述如下:1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + ...现在请你求出该多项式的前n项的和。输入输入数据由2行组成,首先是一个正整数m(m<100),表示测试实例的个数,第二行包含m个正整数,对于每一个整数(不妨设为n,n<100
0),求该多项式的前n项的和。输出对于每个测试实例n,要求输出多项式前n项的和。每个测试实例的输出占一行,结果保留2位小数。输入样例21 2输出样例1.000.50源代码正确版本:01.#include <stdio.h>02.main()03.{04.int m,n,i,j,k;05.double s;06.scanf("%d",&m);07.for (i=1;i<=m;i++)08. {09. scanf("%d",&n);10. s=0;11. for (j=1;j<=n;j++)12. { k=1;13. if (j%2==0)14. {15. k=(-1);16. }17. 18. 19. s=s+k*(1.00/j);20. 21. }22. printf("%.2lf\n",s);23. }24.}错误版本:01.#include <stdio.h>02.main()03.{04.int m,n,i,j;05.double s;06.scanf("%d",&m);07.for (i=1;i<=m;i++)08. {09. scanf("%d",&n);10. s=0;11. for (j=1;j<=n;j++)12. { 13. if (j%2==0)14. {15. j=(-1)*j;16. }17. 18. 19. s=s+(1.00/j);20. 21. }22. printf("%.2lf\n",s);23. }24.}该段代码中的if语句块存在逻辑错误。由于没有考虑到j被赋值后再递增会破坏整个循环,使得程序出错。此时,应当引入一个新的变量来解决该问题。查看文章 C程序设计基础-合法标识符2009-10-30 21:22问题描述输入一个字符串,判断其是否是C的合法标识符。输入输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串。输出对于每组输入数据,输出一行。如果输入数据是C的合法标识符,则输出"yes",否则,输出“no”。输入样例312ajffi8x_aff ai_2输出样例noyesno源代码正确版本:#include <stdio.h>void main(){int n,i,j,flag1,flag2,flag3;char c;scanf("%d",&n);getchar();for (i=1;i<=n;i++){flag1=flag2=flag3=0;j=0;while ((c=getchar())!='\n'){j++;if (j==1){if (c>='a'&&c<='z'||c=='_')flag1=1;}else{if (c>='a'&&c<='z'||c>='A'&&c<='Z'||c=='_'||c>='1'&&c<='9')flag2=1;elseflag3=1;}}if (flag1==1&&flag2==1&&flag3==0)printf("yes\n");elseprintf("no\n");}}错误版本:#include <stdio.h>void main(){int n,i,j,var;char c;scanf("%d",&n);getchar();for (i=1;i<=n;i++){j=0;c=getchar();while((c=getchar())!='\n'){j++;if (j==1){if (c>='a'&&c<='z'||c=='_'){var=1;}else{var=0;break;}}else{if (c>='a'&&c<='z'||c=='_'||c>='0'&&c<='9'){printf("果然执行了这一语句块!\n ");var=1;}else{var=0;break;}}}if (var==0){printf("no\n");}else{printf("yes\n");} }}该段程序中错误地使用了break,导致break后面的else语句块也被执行。对于此类题目,还是应当使用条件变量。这题中,隐含的第三个条件变量flag3比较难想到,这是一个思维
缺陷。查看文章 C程序设计基础-小明A+B2009-11-02 21:00问题描述小明今年3岁了, 现在他已经能够认识100以内的非负整数, 并且能够进行100以内的非负整数的加法计算.对于大于等于100的整数, 小明仅保留该数的最后两位进行计算, 如果计算结果大于等于100, 那么小明也仅保留计算结果的最后两位.例如, 对于小明来说:1) 1234和34是相等的2) 35+80=15给定非负整数A和B, 你的任务是代表小明计算出A+B的值.输入输入数据的第一行为一个正整数T, 表示测试数据的组数. 然后是T组测试数据. 每组测试数据包含两个非负整数A和B(A和B均在int型可表示的范围内).输出对于每组测试数据, 输出小明A+B的结果.输入样例235 8015 1152输出样例1567源代码01.#include <stdio.h>02.void main()03.{04.int T,i,j,A,B,sum,temp;05.scanf("%d",&T);06.getchar();07.for(i=1;i<=T;i++)08.{09.sum=0;10.scanf("%d %d",&A,&B);11.sum=A+B;12.for(j=1;sum>=100;j++)13.{14.sum=sum-100;15.}16.printf("%d\n",sum);17.}18.} 查看文章 C程序设计基础-MAX,NUM2009-11-02 20:37问题描述There are some students in a class, Can you help teacher find the highest student .输入here are some cases. The first line contains an integer t, indicate the cases; Each case have an integer n ( 1 ≤ n ≤ 100 ) , followed n students’ height.输出For each case output the highest height, the height to two decimal plases;输入样例23 170.00 165.00 180.004 165.00 182.00 172.00 160.00输出样例180.00182.00源代码#include <stdio.h>void main(){int t,n,i,j;float height,max;scanf("%d",&n);getchar();for(i=1;i<=n;i++){scanf("%d",&t);scanf("%f",&height);max=height;for(j=1;j<t;j++){scanf("%f",&height);if(height>max){max=height;}}printf("%.2f\n",max);}} 查看文章 C程序设计基础-单词数2009-11-02 20:24问题描述小鱼最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里单词的总数。下面你的任务是帮助小鱼解决这个问题。输入有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由字母和空格组成,没有标点符号,遇到#时表示输入结束。每行的开头是字母或者是#,单词之间用若干个空格分开。输出每组只输出一个整数,其单独成行,该整数代表一篇文章里单词的总数。输入样例you are my friend#输出样例4源代码#include <stdio.h>void main(){char c;int sum,word;while ((c=getchar())!='#'){sum=word=0;while ((c=getchar())!='\n'){if (c==' ') word=0;else if (word==0) {word=1;sum++;}}printf("%d\n",sum);}}该题难点在于利用变量word来使得第一个单词自动加一。C程
序设计基础-开关灯2009-11-02 19:13问题描述有n只灯泡排成一条线,编号分别为1,2,...,n。初始状态灯泡都是不亮的。在这些灯泡上执行一系列的开关灯操作。这些操作的编号为1,2,3,.....,第i次操作把编号为i的倍数的灯泡的开关状态变换一下(亮的变成不亮,不亮的变成亮)。输入每个测试数据值为包含一个整数n ( 0< n<= 10^5)单独一行构成,由多个测试数据,输入有EOF结束。输出对每种情况,输出执行了无穷多次开光灯操作后第n只灯泡的状态。0表示灯不亮,1表示等亮。每个测试数据的输出单独一行。输入样例15输出样例10源代码#include <stdio.h>void main(){int n,i,j,light[100000];while((scanf("%d",&n))!=EOF){for (i=1;i<=n;i++){light[i]=0;}for (j=1;j<=n;j++){for (i=1;i<=n;i++){if (i%j==0){if (light[i]==0)light[i]=1;elselight[i]=0;}}}printf("%d\n",light[n]);}查看文章 C程序设计基础-亲和数2009-10-31 21:10问题描述古希腊数学家毕达哥拉斯在自然数研究中发现,220的所有真约数(即不是自身的约数)之和为:1+2+4+5+10+11+20+22+44+55+110=284。而284的所有真约数为1、2、4、71、 142,加起来恰好为220。人们对这样的数感到很惊奇,并称之为亲和数。一般地讲,如果两个数中任何一个数都是另一个数的真约数之和,则这两个数就是亲和数。你的任务就编写一个程序,判断给定的两个数是否是亲和数输入输入数据第一行包含一个数M,接下有M行,每行一个实例,包含两个整数A,B; 其中 0 <= A,B <= 600000 ;输出对于每个测试实例,如果A和B是亲和数的话输出YES,否则输出NO。输入样例2220 284100 200输出样例YESNO源代码#include <stdio.h>void main(){int m,i,j,A,B,sum1,sum2;scanf("%d",&m);getchar();for (i=1;i<=m;i++){scanf("%d %d",&A,&B);sum1=sum2=0;for (j=1;j<A;j++){if (A%j==0){sum1=sum1+j;}}for (j=1;j<B;j++){if (B%j==0){sum2=sum2+j;}}if (sum1==B&&sum2==A){printf("YES\n");}else{printf("NO\n");}}}查看文章 C程序设计基础-统计字符数2009-10-31 20:19问题描述判断一个由 a-z 这 26 个字符组成的字符串中哪个字符出现的次数最多。输入第 1 行是测试数据的组数 n,每组测试数据占 1 行,是一个由 a-z 这 26 个字符组成的字符串,每组测试数据占一行,每行数据不超过 1000 个字符且非空。输出输出总共n 行,每行输出对应一个输入。一行输出包括出现次数最多的字符和该字符出现的次数,中间是一个空格。 如果有多个字符出现的次数相同且最
多,那么输出 ascii 码最小的那一个字符。输入样例2abbcccadfadffasdf输出样例c 3f 4源代码#include <stdio.h>void main(){int n,i,j,num[26],max;char c,x;scanf("%d",&n);getchar();for (i=1;i<=n;i++){for (j=0;j<=25;j++) //初始化数组 {num[j]=0;}while ((c=getchar())!='\n') //统计字符 {j=c-'a';num[j]++;}max=num[0];x='a';for (j=1;j<=25;j++) //比较{if (max<num[j]){max=num[j];x='a'+j;}}printf("%c %d\n",x,max);}}该问题的难点在于利用数组进行统计并进行比较。查看文章 C程序设计基础-循环移动2009-12-16 20:56问题描述给定一组整数,要求利用数组把这组数保存起来,再利用指针实现对数组中的数循环移动。假定共有n个整数,则要使前面各数顺序向后移m个位置,并使最后m各数变为最前面的m各数。图 1:输入输入有两行:第一行包含一个正整数n和一个正整数m,第二行包含n个正整数。每两个正整数中间用一个空格分开。 输出输出有一行:经过循环移动后数组中整数的顺序依次输出,每两个整数之间用空格分隔。输入样例11 415 3 76 67 84 87 13 67 45 34 45输出样例67 45 34 45 15 3 76 67 84 87 13提示不要用先输出后m个数,再输出前n-m个数的方法实现,也不要用两个数组的方式实现。要求只用一个数组的方式实现,一定要保证在输出结果时,输出的顺序和数组中数的顺序是一致的。源代码#include <stdio.h>void Move(int num[1000],int n,int m){int i;for(i=n-1;i>=0;i--){num[i+m]=num[i];}for(i=0;i<m;i++){num[i]=num[n+i];}for(i=0;i<n;i++){if(i!=n-1)printf("%d ",num[i]);elseprintf("%d\n",num[i]);}}void main(){int n,m,i,num[1000];scanf("%d%d",&n,&m);for(i=0;i<n;i++)scanf("%d",&num[i]);Move(num,n,m);}查看文章 C程序设计基础-指针 字符串比较2009-12-15 21:34问题描述编一程序,将两个字符串s1和s2比较,若s1>s2,输出一个正数;若s1=s2,输出0;若s1<s2,输出一个负数。两个字符串用gets函数读入。两个字符串的长度不超过1000。输出的正数或负数应是相比较的两个字符串相应字符的ASCII码的差值。如果两个字符串中有多个相应的字符不等,则取第一次相应不等的字符串的差值。例如,“A”与“C”相比,由于“A”<“C”,应输出负数,同时由于‘A’与‘C’的ASCII码差值为2,因此应输出“-2”。同理:“And”和“Aid”比较,根据第2个字符比较结果,“n”比“i”大5,因此应输出“5”。输入输入数据第一行包含一个数n,表示有n组测试数据。其中每组数据包括两行: 第一行是字符串s1,第二行是字符串s2。输出对于每组测
输入三个整数,把第二个输入的整数输出篇八
《第三章 数据的输入与输出技术2》
输入三个整数,把第二个输入的整数输出篇九
《C语言格式输入输出总结》
格式小结:
(1)最常用的格式是%d,含义是以10进制形式打印一个整数。
如果输出的整数是负数,则,输出的第一个字符就是‘-’号
(2)%u格式与%d格式类似,只不过要求打印无符号10进制整数。
(3)%o格式请求输出8进制整数
(4)%x和%X格式请求输出16进制整数。
%x格式中用小写字母a,b,c,d,e,f来表示10到15之间的数
%X格式中用大写字母A,B,C,D,E,F来表示10到15之间的数
共同点:8进制和16进制整数总是作为无符号数处理的。
(5)%s格式用于打印字符串,与之对应的参数应该是一个字符指针,待输出的字符始于该指针所指向的地址,直到出现一个空字符('\0')
才终止。
(6)%c格式用于打印单个字符:例如:
printf("%c",c); 等价于 putchar(c);
(7)%g,%f和%e这三个格式用于打印浮点值。
%g格式用于打印那些不需要按列对齐的浮点数特别有用。其作用有二:
一,去掉该数尾多余的零(没有达到六位的数)
二,保留六位有效数字(多余六位的)
%e格式用于打印浮点数时,一律显示地使用指数形式:例如:输出圆周率时是:3.141593e+00 两者的区别:
%g格式打印出的数是总共6位有效数字
%e格式打印出小数点后的6位有效数字
%f禁止使用指数形式来表示浮点数。因此圆周率输出为:3.141593
(但注意它的精度要求:也是小数点后6位有效数字)
(8)%%格式用于打印一个%字符。
(9)%E和%G只是在输出时用大写字母(E)代替了小写字母(e)
另外需要注意的一些知识点:
*************************************** 对齐规则:
(1)当指定宽度大于要输出位数时,数右对齐,左端补空格
当前缀'-'号时,想要数左对齐,右端补空格
大大的前提:只有当“指定宽度”存在时,前缀'-'才有意义。
经验:一般来说,左端对齐的形式看上去要美观整齐一点。
*************************************** 输出正负号的技巧:(记住)例如:
printf("%+d %+d %+d\n",-5,0,5);
只要在中间加个“+”号就行。作用是输出符号位(即,数的正负号)
如果不希望正数的前面出现‘+’号,可用下面的方法
*************************************** 只要在中间加个“ ”号(即:空格)就行。(记住)例如:
作用:如果一个数是非负数,就在它的前面插入一个空格。
int i;
for(i=-3;i<=3;i++)
printf("% d\n",i); //注意%和d之间有一个空格
输出结果如下:
-3
-2
-1
1
2
3
问题:如果‘+’和‘ ’同时出现在“中间”时,要以‘+’为准。
两个符号的共同点:用于对齐输出的数:(尤其对于小数来说)
两种格式:%+e和% e
C语言中基本的输入输出函数有:
putchar ():把变量中的一个字符常量输出到显示器屏幕上;
getchar ();从键盘上输入一个字符常量,此常量就是该函数的值;
printf ();把键盘中的各类数据,加以格式控制输出到显示器屏幕上;
scanf ();从键盘上输入各类数据,并存放到程序变量中;
puts ():把数组变量中的一个字符串常量输出到显示器屏幕上;
gets ():从键盘上输入一个字符串常量并放到程序的数组中.
sscanf(); 从一个字符串中提取各类数据。
putchar() 和 getchar() 顾名思议就是从输入流中获取一个字符和输出一个字符,比较简单,不再多讲。
例子如下:
char c = getchar();
putchar(c);
格式化输入输出scanf()和printf()是最有用的,所以重点讲一下。
printf():
一般形式:
printf("格式控制".输出列表);
eg : printf("a=%d,b=%f,c=%c\n",a,b,c);
1;格式控制.
格式控制是用双引号括起来的字符串,也称"转换控制字符串",它包含以下两部分信息.
格式说明:由"%"和格式字符组成,如%d,%f,%c,他的作用是把输出数据转换为指定格式输出,格式的说明总是由"%"字符开始的.
普通字符:需要原样输出的字符,或者是一些有特殊含义的字符,如\n,\t。
2;输出列表
就是需要输出的一些数据,也可以是表达式,如果在函数中需要输出多个变量或表达式,则要用逗号隔开.
一些特殊字符的输出:
单引号,双引号,和反斜杠的输出在前面加转义字符”\”
如:”\’” , “\”” , “\\”
%的输出用两个连在一起的%%,即printf(“%%”);
常用的格式说明如下:
格式字符
d 以十进制形式输出带符号整数(正数不输出符号)
o 以八进制形式输出无符号整数(不输出前缀O)
x 以十六进制形式输出无符号整数(不输出前缀OX)
u 以十进制形式输出无符号整数
f 以小数形式输出单精度实数
lf以小数形式输出双精度实数
e 以指数形式输出单、双精度实数
g 以%f%e中较短的输出宽度输出单、双精度实数
c 输出单个字符
s 输出字符串
这里强调一下:网上很多文章都说f 和lf是一样的,即不管单精度,双精度浮点数,都可以用f, 但我在POJ上做过测试,输出Double时用f确实也可以 ,但读入时,用f就报WA,所以大家如果对Double进行读写的话,都用lf吧。
说到Double,再啰嗦一句,建议大家要用到浮点数时都用Double,不要用float,因为在很多情况下,float精度不够会导致WA。
特殊:
对64位整数的输入输出,在POJ上的C++环境下(即VC),64位整数是:
__int64 (注意int前面是两个下划线)
输入输出格式为”%I64d”.
在G++环境下(即Dev C++) 64位整数是
long long
输入输出格式为”%lld”.
输出宽度
用十进制整数来表示输出的最少位数。 注意若实际位数多于定义的宽度,则按实际位数输出, 若实际位数少于定义的宽度则补以空格或0。
精度
精度格式符以“.”开头,后跟十进制整数。意义是:如果输出数字,则表示小数的位数;如果输出的是字符, 则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。
标志格式字符
- 结果左对齐,右边填空格
+ 输出符号(正号或负号)空格输出值为正时冠以空格,为负时冠以负号
例如:
double c=24212345.24232;
printf(“%020.4”); 表示输出精确到小数点后4位,输出占20位,若有空余的位补0. scanf:
scanf的很多用法都是和printf对应的,故不再赘述。
说一下scanf一个特别好用的地方,就是可以滤去一些不想要的东西。
举例说明如下:
比如输入为日期 yyyy-mm-dd,就可以这样写:
int year,moth,day;
scanf(“%d-%d-%d”,&year,&moth,&day);
再比如:
scanf("%3d %*3d %2d",&m,&n); 输入113 118 69回车(系统将113赋予m,将69赋予n,因为*号表示跳过它相应的数据所以118不赋予任何变量)
puts()用的不多,且基本都能用printf()代替,故不再多说。
gets()是从输入流中获取一行字符串放入字符数组中:
char in[100];
gets(in);
大家可能最容易出错的地方就是字符串的输入,所以强调一下:
能进行字符,字符串输入的有:
getchar(), scanf(“%c”); scanf(“%s”), gets()
其中getchar() 和 scanf(“%c”)的功能是一样的。
需要注意的是,这两个函数读入的是输入流中当前位置的字符,
比如:
scanf(“%d”,&n);
c = getchar();
假设输入 67/ (假设“/”代表回车),则第一个scanf读入一个整数67后,当前输入流的位置是67之后,即指向回车符,所以第二个getchar()读入的就是一个回车符了,即 c = ‘\n’。 同样,gets()也是从当前位置读入一行字符串。
比如:
scanf(“%d”,&n);
gets(str);
此时读入字符数组中的字符串就是“\n” 了
所以通常在用scanf读入一个非字符串的类型之后,如果要读入字符,或字符数组,都用一个额外的getchar()把回车符读掉,若后面跟的不止一个回车符,可能还有多余的空格的话,就用gets()读掉。
和以上不同的是,scanf(“%s”) 读入的时候是会忽略掉空格,回车和制表符的。并且以空格,回车和制表符作为字符串结束的标志。
经常会有这样的题,输入第一行是一个整数,接下来每行的第一个是一个字符,用来表示某种操作,后面再跟一些数据,比如:
4
A 100 2
B 23
A 23 89
B 34
像这种输入就需要小心,读入字符时不要读成回车符。
为了防止意外,我一般是这样处理这类输入的:
char model[2];
Scanf(“%d”,&n);
for(…,…,…),
scanf(“%s”,model);
if(model*0+ == ‘A’),
}
else{
}
}
sscanf():
sscanf()经常用来分解字符串,功能非常强大,但很多功能都需要正则表达式的知识,所以就介绍一下最简单的几种用法,大家如果想了解更多的话,自己去网上找吧。
1.
char str[100],str1[100],str2[100];
gets(str);
sscanf(str,”%s%s”,str1,str2);
将读入的一整行字符串按空格,制表符或回车符分割成两个字符串。
2
取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。
sscanf("123456 ", "%4s", str);
输入三个整数,把第二个输入的整数输出篇十
《c语言20题上机题目》
1.计算球体积
Problem Description
根据输入的半径值,计算球的体积。
Input
输入数据有多组,每组占一行,每行包括一个实数,表示球的半径。
Output
输出对应的球的体积,对于每组输入数据,输出一行,计算结果保留三位小数。
Sample Input
1 1.5
Sample Output
4.189 14.137
2.成绩转换
Problem Description
输入一个百分制的成绩t,将其转换成对应的等级,具体转换规则如下: 90~100为A;
80~89为B;
70~79为C;
60~69为D;
0~59为E;
Input
输入数据有多组,每组占一行,由一个整数组成。
Output
对于每组输入数据,输出一行。如果输入数据不在0~100范围内,请输出一行:“Score is error!”。
Sample Input
56 67 100 123
Sample Output
E D A Score is error!
3.第几天?
Problem Description
给定一个日期,输出这个日期是该年的第几天。
Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
Sample Input
1985/1/20 2006/3/12
Sample Output
20 71
4.求奇数的乘积
Problem Description
给你n个整数,求他们中所有奇数的乘积。
Input
输入数据包含多个测试实例,每个测试实例占一行,每行的第一个数为n,表示本组数据一共有n个,接着是n个整数,你可以假设每组数据必定至少存在一个奇数。
Output
输出每组数中的所有奇数的乘积,对于测试实例,输出一行。
Sample Input
3 1 2 3 4 2 3 4 5
Sample Output
3 15
5.平方和与立方和
Problem Description
给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和。
Input
输入数据包含多组测试实例,每组测试实例包含一行,由两个整数m和n组成。
Output
对于每组输入数据,输出一行,应包括两个整数x和y,分别表示该段连续的整数中所有偶数的平方和以及所有奇数的立方和。
你可以认为32位整数足以保存结果。
Sample Input
1 3 2 5
Sample Output
4 28 20 152
6.数值统计
Problem Description
统计给定的n个数中,负数、零和正数的个数。
Input
输入数据有多组,每组占一行,每行的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个实数;如果n=0,则表示输入结束,该行不做处理。
Output
对于每组输入数据,输出一行a,b和c,分别表示给定的数据中负数、零和正数的个数。
Sample Input
6 0 1 2 3 -1 0 5 1 2 3 4 0.5 0
Sample Output
1 2 3 0 0 5
7.多项式求和
Problem Description
多项式的描述如下:
1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + ...
现在请你求出该多项式的前n项的和。
Input
输入数据由2行组成,首先是一个正整数m(m<100),表示测试实例的个数,第二行包含m个正整数,对于每一个整数(不妨设为n,n<1000),求该多项式的前n项的和。
Output
对于每个测试实例n,要求输出多项式前n项的和。每个测试实例的输出占一行,结果保留2位小数。
Sample Input
2 1 2
Sample Output
1.00 0.50
8.素数判定
Problem Description
对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x<y<=50),判定该表达式的值是否都为素数。
Input
输入数据有多组,每组占一行,由两个整数x,y组成,当x=0,y=0时,表示输入结束,该行不做处理。
Output
对于每个给定范围内的取值,如果表达式的值都为素数,则输出"OK",否则请输出“Sorry”,每组输出占一行。
Sample Input
0 1 0 0
Sample Output
OK
9.蟠桃记
Problem Description
喜欢西游记的同学肯定都知道悟空偷吃蟠桃的故事,你们一定都觉得这猴子太闹腾了,其实你们是有所不知:悟空是在研究一个数学问题!
什么问题?他研究的问题是蟠桃一共有多少个!
不过,到最后,他还是没能解决这个难题,呵呵^-^
当时的情况是这样的:
第一天悟空吃掉桃子总数一半多一个,第二天又将剩下的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,到第n天准备吃的时候只剩下一个桃子。聪明的你,请帮悟空算一下,他第一天开始吃的时候桃子一共有多少个呢?
Input
输入数据有多组,每组占一行,包含一个正整数n(1<n<30),表示只剩下一个桃子的时候是在第n天发生的。
Output
对于每组输入数据,输出第一天开始吃的时候桃子的总数,每个测试实例占一行。
Sample Input
2 4
Sample Output
4 22
10.青年歌手大奖赛_评委会打分
Problem Description
青年歌手大奖赛中,评委会给参赛选手打分。选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。
Input
输入数据有多组,每组占一行,每行的第一个数是n(2<n<=100),表示评委的人数,然后是n个评委的打分。
Output
对于每组输入数据,输出选手的得分,结果保留2位小数,每组输出占一行。
Sample Input
3 99 98 97 4 100 99 98 97
Sample Output
98.00 98.50
11.求平均成绩
Problem Description
假设一个班有n(n<=50)个学生,每人考m(m<=5)门课,求每个学生的平均成绩和每门课的平均成绩,并输出各科成绩均大于等于平均成绩的学生数量。
上一篇:赞美字画句子