C语言程序基础实验4——自然数n的各位数字之和、求2+22+222+....+22222的值、大小写字母转换、任意输入n个数,输出最大和最小值及其对应的序列号、求一个数除以9的商等于它各位数字的平方和


知识摘要

  1. get()函数:字符串输入(题3)

题目1:循环结构习题:自然数n的各位数字之和

内容详情

题目1:
输入提示:输入仅一行,输入n的值。
输出提示:输出仅一行,输出相应的和值。
输入样本:100
输出样本:sum=1

程序源码

#include <stdio.h>
#include <stdlib.h>
int main()
{ 
	int n,sum=0;
	scanf("%d",&n);
	while(n)	//各位数字求和
	{
		sum+=n%10;
		n/=10;
	}
	printf("sum=%d",sum);
	return 0;
} 

题目2:循环结构习题:求2+22+222+…+22222的值

内容详情

题目2:
输入提示:输入仅一行,输入2个数a、n
输出提示:输出仅一行,输出相应的结果
输入样本:2 3
输出样本:Sn=246

程序源码

#include <stdio.h>
#include <stdlib.h>
int main()
{ 
	int a,n,i,s=0,Sn;	//因为要求类和Sn,这里用s表示每一个n对应的数(22...)
	scanf("%d%d",&a,&n);
	for(i=1;i<=n;i++)
	{
		s=s*10+a;	//得到22...
		Sn+=s;		//求和
	}
	printf("Sn=%d",Sn);
	return 0;
} 

题目3:循环结构习题:大小写字母转换

内容详情

题目3:
输入提示:输入仅一行,输入字符序列
输出提示:输出仅一行,字符转换。大写变小写,小写变大写,其它字符不变
输入样本:ABC&d#ef
输出样本:abc&D#EF

程序源码

#include <stdio.h>
#include <stdlib.h>
int main()
{ 
	int i;
	char a[100],b[100];
	gets(a);	//输入字符串
	for(i=0;a[i]!='\0';i++)
	{
		if ('A'<=a[i]&&a[i]<='Z')
			b[i]=a[i]+32;
		else if('a'<=a[i]&&a[i]<='z')
			b[i]=a[i]-32;
		else
			b[i]=a[i];
	}
	b[i]='\0';	//注意这里在末尾加了空字符
	printf("%s",b);
	return 0;
} 

题目4:循环结构习题:任意输入n个数,输出最大和最小值及其对应的序列号

内容详情

题目4:
输入提示:输入第一行:输入n值。
输入第二行:输入n个整数。
输出提示:输出仅二行
第一行:输出最大值和最小值
第二行:输出最大值序列号和最小值序列号。
输入样本:4
78 98 88 97
输出样本:max=98,min=78
maxi=2,mini=1

程序源码

#include <stdio.h>
#include <stdlib.h>
int main()
{ 
	int n,a[100],i;
	int max,min,maxi,mini;
	scanf("%d",&n);
	for (i=0;i<n;i++)
		scanf("%d",&a[i]);
	max=a[0];min=a[0];maxi=1;mini=1;
	for (i=0;i<n;i++)
	{
		if (a[i]>max)
		{
			max=a[i];
			maxi=i+1;
		}
		if (a[i]<min)
		{
			min=a[i];
			mini=i+1;
		}
	}
	printf("max=%d,min=%d\n",max,min);
	printf("maxi=%d,mini=%d",maxi,mini);
	return 0;
} 

题目5:循环结构习题:求一个数除以9的商等于它各位数字的平方和

内容详情

题目5:
输入提示:输入仅一行,输入两个正整数m和n(m和n是三位数),两个数用空
格分开。
输出提示:输出多行,输出相应结果,一个数一行。
输入样本:325 700
输出样本:453
535
561
635
661

程序源码

#include <stdio.h>
#include <stdlib.h>
int main()
{ 
	int m,n,i,x,y;
	scanf("%d%d",&m,&n);
	for (i=m;i<=n;i++)
	{
		x=i/9;
		y=(i/100)*(i/100)+(i/10%10)*(i/10%10)+(i%10)*(i%10);
		if (x==y)
			printf("%d\n",i);
	}
	return 0;
} 
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值