3-2 奇偶分家。输入一个正整数n,再输入n个非负整数,统计奇数和偶数各有多少个
#include<stdio.h>
int main()
{
int count_odd, count_even, i, n, number;
count_odd,count_even,i,n,number;
count_odd=0; /*count_odd记录奇数的个数*/
count_even=0; /*count_even记录偶数的个数*/
printf("Enter n:");
scanf("%d",&n);
printf("Enter %d numbers:",n);
for(i=1; i<=n; i++){
scanf("%d", &number);
if(number%2!=0){ /*若number除以2的余数不是0,則力奇数*/
count_odd++;
}else{
count_even++;
}
}
printf("Odd:%d, Even:%d\n",count_odd, count_even);
return 0;
}
练习3-2 计算符号函数的值
对于任一整数n,符号函数sign(n)的定义如下:
请编写程序计算该函数对任一输入整数的值。
输入格式:
输入在一行中给出整数n。
输出格式:
在一行中按照格式“sign(n) = 函数值”输出该整数n对应的函数值。
输入样例1:
10
输出样例1:
sign(10) = 1
输入样例2:
0
输出样例2:
sign(0) = 0
输入样例3:
-98
输出样例3:
sign(-98) = -1
#include <stdio.h>
int main(){
int n, sign;
scanf("%d", &n);
if( n < 0 )
sign = -1;
else if( n == 0 )
sign = 0;
else
sign = 1;
printf("sign(%d) = %d", n, sign);
return 0;
}
练习3-3 统计学生平均成绩与及格人数
本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩不低于60分)的人数。题目保证输入与输出均在整型范围内。
输入格式:
输入在第一行中给出非负整数N,即学生人数。第二行给出N个非负整数,即这N位学生的成绩,其间以空格分隔。
输出格式:
按照以下格式输出:
average = 成绩均值
count = 及格人数
其中平均值精确到小数点后一位。
输入样例:
5
77 54 92 73 60
输出样例:
average = 71.2
count = 4
#include <stdio.h>
#include <stdlib.h>
int main()
{
int N;
int count=0,sum=0;
double P;
scanf("%d\n",&N);
for (int i=0; i<N; i++)
{
int a;
scanf("%d",&a);
if(a>=60)
{
count ++;
}
sum=sum+a;
}
P= N==0? 0: sum*1.0/N;
printf("average = %.1f\n",P);
printf("count = %d",count);
}
3-10 输入一个正整数n,再输入n个字符,分别统计出其中空格或回车、数字字符和其他字符个数。要求使用switch语句编写。
// 统计字符,包括空格或回车、数字字符和其他字符
#include<stdio.h>
int main(){
int blank, digit, i, n, other; /*定义3个变量分别存放统计结果*/
char ch;
blank = digit = other = 0; /*置存放统计结果的3个变量的初值为零*/
printf("Enter n:");
scanf("%d",&n);
getchar();
printf("Enter %d characters:",n);
for(i=1; i<=n; i++){
ch = getchar(); /*输入1个字符*/
switch(ch){
case ' ': /*语句段为空,请注意空格符的表示方式 */
case '\n':
blank++;
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;
}
}
printf("blank=%d, digit=%d, other=%d\n", blank, digit, other);
return 0;
}
练习4-3 求给定精度的简单交错序列部分和
本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... 直到最后一项的绝对值不大于给定精度eps。
输入格式:
输入在一行中给出一个正实数eps。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后六位。题目保证计算结果不超过双精度范围。
输入样例1:
4E-2
输出样例1:
sum = 0.854457
输入样例2:
0.02
输出样例2:
sum = 0.826310
#include<stdio.h>
#include<math.h>
int main(){
double eps,i,x=1.0,sum=1.0;
scanf("%lf",&eps);
for(i=1;x>eps;i++){
x=1/(1+3*i); // 错误点:写了i+=3;导致i实际加了不止3
sum += (pow(-1,i))*x;
}
printf("sum = %.6lf",sum);
return 0;
}
判断素数
#include <stdio.h>
int main()
{
int n,i;
printf("请输入一个数:\n");
scanf("%d",&n);
for(i=2;i<n;i++)
if(n%i==0)
break;
if(i<n)
printf("%d不是素数\n",n);
else
printf("%d是素数\n",n);
return 0;
}
4-7 求e的近似值
自然常数 e 可以用级数 1+1/1!+1/2!+⋯+1/n!+⋯ 来近似计算。本题要求对给定的非负整数 n,求该级数的前 n+1 项和。
输入格式:
输入第一行中给出非负整数 n(≤1000)。
输出格式:
在一行中输出部分和的值,保留小数点后八位。
输入样例:
10
输出样例:
2.71828180
#include<stdio.h>
int main()
{
int i, j, n;
double m, sum;
sum=1;
scanf("%d", &n);
for(i=1; i<=n; i++){
m=1;
for(j=1; j<=i; j++){
m=m*j;//阶乘
}
m=1.0/m;
sum=sum+m;
}
printf("%.8f", sum);
return 0;
}
5-3 使用函数判断完全平方数。定义一个判断完全平方数的函数 IsSquare(n),当n为完全平方数时返回 1,否则返回 0,不允许调用数学库函数。
可以来用以下等差数列求和公式计算。
1+3+5+7+..+(2×m-1)=m^2=n
#include <stdio.h>
int IsSquare(int n){
int i;
for(i=1; n>0; i=i+2){
n=n-i;
}
if(n==0){
return 1;
}else{
return 0;
}
}
5-4 最大公约数函数
#include <stdio.h>
int main()
{
int u, v;
scanf("%d %d", &u, &v);
while (v != 0)
{
int tmp = u % v;
u = v;
v = tmp;
}
printf("%d", u);
return 0;
}
5-6 数字金字塔
#include <stdio.h>
void pyramid(int n );
int main()
{
int n;
scanf("%d", &n);
pyramid(n);
return 0;
}
void pyramid( int n ){
int i,j,k;
//下面是三层for
for(i=1;i<=n;i++){
for( j=1;j<=n-i;j++){
printf(" ");//输出空格
}
for(k=1;k<=i;k++){//行数和数字数目相同的。
printf("%d",i);
printf(" ");
}
printf("\n");//注意换行
}
}
7-1 输入所有大于平均值的数
输入格式:
输入在第1行中给出一个正整数n(1≤n≤10),第2行输入n个整数,其间以空格分隔。题目保证数据不超过长整型整数的范围。
输出格式:
输出在第1行给出平均值,保留2位小数。在第2行输出所有大于平均值的数,每个数的后面有一个空格;如果没有满足条件的数,则输出空行。
如果输入的n不在有效范围内,则在一行中输出"Invalid."。
输入样例1:
10
55 23 8 11 22 89 0 -1 78 186
输出样例1:
47.10
55 89 78 186
输入样例2:
0
输出样例2:
Invalid.
//
// Created by hl on 2024/3/3.
//
#include<stdio.h>
int main()
{
int i,n,count=0,sum=0;
double ave;
int a[10]; //括号里面要为数!
scanf("%d",&n);
if(n>10||n<1) printf("Invalid.");
else{ //这个括号不能省!!!
for(i=0;i<n;i++){ //i从0开始!
scanf("%d",&a[i]); //给数组元素输入数字
sum=sum+a[i];
}
ave=1.0*sum/n;
printf("%.2f\n",ave);
for(i=0;i<n;i++){
if(a[i]>ave){
printf("%d ",a[i]);
count++;
}
}
if(count==0) printf("\n");
}
return 0;
}
7-10 计算天数
本题要求编写程序计算某年某月某日是该年中的第几天。
输入格式:
输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。
输出格式:
在一行输出日期是该年中的第几天。
输入样例1:
2009/03/02
输出样例1:
61
输入样例2:
2000/03/02
输出样例2:
62
#include<stdio.h>
int main()
{
int y,m,d,days=0;
scanf("%d/%d/%d",&y,&m,&d);
int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if(y%400==0||(y%4==0&&y%100!=0))
a[1]=29;
for(int i=0;i<m-1;i++)
{
days+=a[i];
}
days+=d;
printf("%d",days);
return 0;
}
7-11 回文字符串
//
// Created by hl on 2024/3/3.
//
#include <stdio.h>
#include <string.h>
int main()
{
char a[100]= {0};
int i = 0;
int len = 0;
gets(a);
len = strlen(a); //计算输入字符串的长度;
for(i = 0; i < (len / 2); i++) //只需要判断前一半(len/2)长度就好了
{
if(a[i] != a[len - 1 - i]) //判断是否为回文数;
{
printf("不是回文数\n");
return 0;
}
}
printf("是回文数\n");
return 0;
}
冒泡排序
#include<stdio.h>
int main(){
int data[10];
printf("请输入数据:\n");
int i,j;
for(i = 0;i < 10;i ++){
scanf("%d",&data[i]); //输入数据
}
for(i = 0;i < 10;i ++){ //采用双重循环
for(j = 0;j < 10 - 1 - i;j++){
if(data[j] > data[j+1]){ //这里默认采用升序来排列
int temp; //定义一个临时值来存储数据,以此来达到交换数值的目的
temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
}
}
}
printf("排序好的数组为:\n");
for(i = 0;i < 10;i ++){ //用for循环来遍历并输出排序完成的数组
printf("%d ",data[i]);
}
return 0;
}
标签:count,复习,int,样例,printf,include,输入,语言
From: https://www.cnblogs.com/ydd1/p/18050050