XJTU_ 西安交通大学2020大学计算机作业-第十周_一个函数来判断一个正整数是否为回文数,若是则返回1,否则返回0。所谓回文数是-程序员宅基地

技术标签: 大计基作业  c语言  

XJTU_ 西安交通大学2020大学计算机作业-第十周

XJTU_ 西安交通大学2020大学计算机作业-第十周

注:所有题所有用例均已通过。

俺又更新了,还是求点星星
文章没上传到github,反正没人点星星:https://github.com/nobodyXX/XJTU_C_homework/blob/main/week7,如果这篇文章带给你了帮助或者灵感,欢迎给我点个星星,谢谢!!!

第一题

编写程序,将用户输入的最多5位八进制数转换为十进制。

输入:一个整数。

输出:一个整数。

样例输入:
7
样例输出:
7

#include<math.h>
int main() {
    
	int a, b=0;
	scanf("%d", &a);
	for (int i = 0; a != 0; a = a / 10, i++)b = b + (a % 10) * pow(8, i);
	printf("%d", b);
	return 0;
}

第二题

编写函数,将一个字符串str中指定的字符ch删去(包括重复出现的字符),并编写主函数进行调用测试。函数原型: void delchar(char *str,char ch);。

输入:

占二行。

第1行,输入任意字符串(注:输入的字符串长度不会超过80)

第2行,输入一个字符

输出:

占一行

样例输入:
x+yz-12
/
样例输出:
x+y
z-12

#include<string.h>
void delchar(char *str, char ch) {
    
	int l = strlen(str);
	for (int i = 0; i<l; i++) {
    
		if (str[i] == ch) {
    
			for (int j = i; j<l; j++) 
				str[j] = str[j + 1];
          i--;//防止两个ch连在一起,与之后的i++抵消
		}
	}
}
int main() {
    
	char str[100], ch;
	gets(str);
	ch = getchar();
	delchar(str, ch);
	puts(str);
	return 0;
}

第三题

"求[n,m]区间中的所有素数及素数的个数。

输入:n,m

输出:列出[n,m]中的所有素数,中间用一个空格隔开,最后显示素数的个数。

样例:

10 30

11 13 17 19 23 29 6

样例输入:
101 101
样例输出:
101 1

int main(){
    
    int n,m,count=0;
    scanf("%d %d",&n,&m);
    for (int a=n;a<=m;a++){
    
        for(int i=2;i<=a;i++){
    
            if(a%i==0&&i!=a)break;
            if(i==a) count++,printf("%d ",a);
        }
    }
    printf("%d",count);
    return 0;
}

第四题

编写一个函数来判断一个正整数是否为回文数,若是则返回1,否则返回0。所谓回文数是指各位数字左右对称的数,例如1221、3553等。该函数的原型为:

int ispalindrome(int n);

其中参数n是待判断的正整数,该函数有返回结果。

编写主函数,对上述函数进行测试,并找出1000∽n (1000 ≤ n <10000)之间的所有回文数,按从小到大的次序在屏幕上显示输出,每个数之间用一个空格分隔,最后一个数后面没有空格。

样例输入:
1200
样例输出:
1001 1111

int main(){
    
    int n;
    scanf("%d",&n);
    for(int i=1000;i<=n;i++)
        (i%10==i/1000&&i/10%10==i/100%10)?((i==1001)?printf("1001"):printf(" %d",i)):0;
    return 0;
}

第五题

"输入n,m,正整数,n<=m, 找出[n, m]区间内各位数字都不同并且能被3,5,7整除的偶数。

 输入:正n,m,用空格隔开,n<=m.

 输出:若干符合条件的数,以一个空格隔开。区间内没有满足条件的数时显示-1.

样例1:

100 500

210 420

样例2:

100 200

-1

样例输入:
100 1000
样例输出:
210 420 630 840

int main() {
    
	int n, m, counter = 0;//l记录各数字出现次数
	char a[10];
	scanf("%d %d", &n, &m);
	for (int i = n, b=0; i <= m; i++) {
    
		sprintf(a, "%d", i);
		int list[10] = {
     0 }, l = strlen(a), q = 1;//q判断是否有重复数字,b计数
		for (int j = 0; j < l; j++) {
    
			list[a[j] - 48]++;//0的ascii码是48
			(list[a[j] - 48] > 1) ? q = 0 : 0;
		}
		if (q == 1 && i % 210 == 0) {
    
			(counter == 0) ? printf("%d", i) : printf(" %d", i);
			counter++;
		}
		(i == m && counter == 0) ? printf("-1") : 0;
	}
	return 0;
}

第六题

输入一个长度不超过 100 的字符串,删除串中的重复字符。

输入:

输入要检查的字符串,长度不超过100个字符。例如:abacaeedabcdcd。

输出:

删除重复字符后的字符串。例如:abced。

样例输入:
give
样例输出:
give

#include<string.h>
int main() {
    
	char str[100];
	gets(str);
	int l = strlen(str), n = 0;
	char a[100];//记录重复的字符
	for (int i = 0; i < l&&str[i] != '\0'; i++, n++) {
    
		for (int k = 0; k < n; k++) {
    //删去重复字符
			for (; str[i] == a[k];)//删到a[i]是全新的字符为止
				for (int j = i; j < l; j++, k = 0) //删字符,k=0判断新的a[i]是否要删
					str[j] = str[j + 1];
		}
		a[n] = str[i];//str[i]是从未出现的字符
	}
	puts(str);
	return 0;
}

第七题

输入有字母和数字组成的字符串s和t(串长不超过100个字符),将在字符串s中出现,但未在字符串t中出现的字符(区分大小写)组成一个新的字符串放在u中,u中字符按原字符串中字符顺序排列,不去掉重复字符,输出u。若s中的字符在t中都出现过,输出#。

例如:当s="112345",t="2467"时,u="1135"。若s="12", t="12",输出"#"

输入:两个字符串,中间用空格隔开。scanf("%s%s",s,t);

输出:结果串

样例输入:
12345 6789
样例输出:
12345

int main() {
    
	char s[100], t[100], u[100]="";
	scanf("%s %s", s, t);
	int ls = strlen(s), lt = strlen(t), n = 0;
	for (int i = 0; i < ls; i++) {
    
		for (int j = 0; j < lt; j++) {
    
			if (s[i] == t[j]) break;
			(j == lt - 1) ? u[n] = s[i], n++ : 0;
		}
	}
	(u[0]=='\0')?printf("#"):puts(u);
	return 0;
}

第八题

闰年计算。程序输入一个正整数Y,以及另一个正整数N,以一个空格分隔。计算从Y年开始后的第N个闰年是哪一年(如果Y本身是闰年,则Y之后的第一个闰年是Y)。

int main(){
    
    int y,n;
    scanf("%d %d",&y,&n);
    for(int i=0;i<n;y++) (y%4==0&&(y%100!=0||y%400==0))?i++:0;
    printf("%d",y-1);
    return 0;
}

第九题

输入一个整数n(n>=2),判断n是否为素数。是素数输出 “YES”, 否则输出 “NO”。

样例输入:
7
样例输出:
YES

int main() {
    
	int n,p=0;
	scanf("%d", &n);
	for (int i = 2; i <= n; i++) {
    
		if (n%i == 0 && i != n) break;
		if (i == n) p = 1;
	}
	(p == 1) ? printf("YES") : printf("NO");
	return 0;
}

第十题

单词加密。输入一个字符串和一个非负整数k,对字符串中的每一个字母,用字母表中其后的第k个字母代替,不够k个时再从字母a循环计数。例如k=3是,a用d代替,A用D代替,x用a代替,y用b代替,保持大小写不变。字符串中的非字母字符不变。字符串的长度不超过100。

输入:一个字符串和非负整数k

输出:加密的字符串。

样例输入:
Beijing 9
样例输出:
Knrsrwp

#include<string.h>
int main() {
    
	int k;
	char a[100], b[100]="";
	scanf("%s %d", a, &k);
	int l = strlen(a), k1 = k % 52;//防止k太大,循环多次
	for (int i = 0; i < l; i++) {
    
		if (a[i] >= 65 && a[i] <= 90) b[i] = (a[i] + k > 90) ? a[i] + k - 26 : a[i] + k;
		else if (a[i] >= 97 && a[i] <= 122) b[i] = (a[i] + k > 122) ? a[i] + k - 26 : a[i] + k;
		else b[i] = a[i];
	}
	puts(b);
	return 0;
}

第十一题

"输入字符串,字符串中有若干星号*,去掉字符串首尾的星号(*),保留中间的星号。 字符串长度不大于200.

输入:带有*号的字符串。

输出:首尾不带*号的字符串。

样例:

***street**music****

street**music

样例输入:
stree*****tmusic
样例输出:
stree*****tmusic
#include<string.h>
int main() {
    
	char a[201];
	gets(a);
	int l = strlen(a), m = 0, n = 0;
	for (int i = 0; a[i] == '*'; i++, m++);//统计a开始*的个数
	for (int i = l - 1; a[i] == '*'; i--, n++);//统计a末尾*的个数
	for (int i = m; i <= l - n - 1; i++) printf("%c", a[i]);
	return 0;
}

第十二题

"编写程序,去掉字符串末尾多余的星号。输入带星号()的字符串和n,使字符串尾部的号不得多于n个;若多于n个,则删除多余的号;若少于或等于n个,则什么也不做,字符串中间和前面的号不删除。字符串的长度不超过200。字符串中的星号是英文星号。

输入:一个字符串和一个非负整数,中间用空格隔开。

输出:去掉多余*号的字符串。
样例:

***street**music****  2

***street**music**

样例输入:
stree*****tmusic    2
样例输出:
stree*****tmusic
int main() {
    
	char a[201];
	int n, l, m=0;
	scanf("%s %d", a, &n);
	l = strlen(a);
	for (int i = l - 1; a[i] == '*'; i--, m++);//统计a末尾*的个数
	m = (m > n) ? m - n : 0;
	for (int i = 0; i <= l - m - 1; i++) printf("%c", a[i]);
	return 0;
}

第十三题

从键盘输入一个32位的二进制形式的IP地址,将其转换为点分十进制的表示,如果输入的字符串中含有1和0以外的字符,则输出“该字符串不是正确的IP地址”。

输入:0、1二进制序列,不会超过32位,位数不足时程序自动在前面补0.

输出:点分IP地址。

样例输入:
11111111100000011111111110001111
样例输出:
255.129.255.143

#include<string.h>
#include<math.h>
int main() {
    
	char a[33], b[33] = "00000000000000000000000000000000";//32个0
	gets(a);
	int l = strlen(a);
	for (int i = 0; i < l; i++)
		if (a[i] != '0' && a[i] != '1'){
    
        	printf("该字符串不是正确的IP地址");
          return 0;
      }//有01以外的字符结束运行
	for (int i = 32 - l, n=0; n < l; i++, n++) b[i] = a[n];//补0,后面代码好写一些
	for (int i = 0; i < 4; i++) {
    
		int n = 0;
		for (int j = 7 + 8*i, c = 0; j >= 8 * i; j--, c++)
			n = n + ((b[j] == '1') ? pow(2, c) : 0);
		(i == 3) ? printf("%d", n) : printf("%d.", n);
	}
	return 0;
}

第十四题

输入公元年、月、日三个整数值,计算该日是该年的第几天(应考虑闰年)。

输入,三个整数,表示年、月、日

输出,一个整数,表示当年第几天

样例输入:
2015 1 1
样例输出:
1

int main() {
    
	int y, m, d, counter, a[13] = {
    0,31,59,90,120,151,181,212,243,273,304,334,365};
	scanf("%d %d %d", &y, &m, &d);
	counter = ((y % 4 == 0 && (y % 100 != 0||y%400==0) && m>2) ? a[m-1] + d + 1 : a[m-1] + d);
	printf("%d", counter);
	return 0;
}

第十五题

在医院打点滴(吊针)的时候,如果滴起来有规律,先是滴一滴,停一下;然后滴二滴,停一下;再滴三滴,停一下…,现在有一个问题:这瓶盐水一共有v毫升,每一滴是d毫升,每一滴的速度是一秒(假设最后一滴不到d毫升,则花费的时间也算一秒),停一下的时间也是一秒,这瓶水什么时候能滴完呢?(0 < d < v <6000)
输入:一滴是多少毫升和一瓶盐水有多少毫升,中间用空格隔开.
输出:滴完需要多少时间.

样例输入:
0.5 1.7
样例输出:
6

int main() {
    
	float d, v, s = 0;
	scanf("%f %f", &d, &v);
	for (int i = 1; v > 0; i++, (v>0)?s++:0)//s++:中间停的那一秒,最后不加
		for (int j = i; v > 0&&j>0; v = v - d, j--)s++;
	printf("%.0f", s);
	return 0;
}

都看到这儿了,点个星星呗https://github.com/nobodyXX/XJTU_C_homework/blob/main/week7

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44687093/article/details/110097251

智能推荐

编程人员的不二之选 LEGION Y9000X正式发布_y9000x写代码够用吗-程序员宅基地

文章浏览阅读4.6k次。10月11日,联想集团在全球总部未来中心举行了主题为“解密X空间”的新品发布会,正式发布了LEGIONY9000X笔记本电脑,并公布了“联想个人云存储核心测试用户招募”计划。高性能标压轻薄本 LEGION Y9000X赋能内容创造者“你正在用的笔记本是游戏本还是轻薄本?”通过这样的一个问题,联想中国区消费业务笔记本产品规划总监林林,拉开了“解密X空间”的序幕,带来重磅新品——高性能标..._y9000x写代码够用吗

强化学习(reinforcement learning)教程_强化学习教程-程序员宅基地

文章浏览阅读3.4w次,点赞2次,收藏29次。前一阵研究强化学习,发现中文的资料非常少,实例就更少。于是翻译一篇q学习算法的教程,供需要的人学习。原文链接:http://mnemstudio.org/path-finding-q-learning-tutorial.htm正文:Q学习算法是一种用来解决马尔可夫决策过程中最优化问题的方法。Q学习算法最大的特点是它具有选择瞬时奖励和延迟奖励的能力。在每一步中,agent通过观察状态_强化学习教程

SpringBoot+Vue校园二手书交易平台(源码+论文)_基于vue+springboot的校园二手商品交易网站论文-程序员宅基地

文章浏览阅读81次。后端:Java+SpringBoot前端:Vue数据库:MySQL开发软件:Eclipse、MyEclipse、IDEA都可以运行。_基于vue+springboot的校园二手商品交易网站论文

Chrome 开发者工具各种骚技巧-程序员宅基地

文章浏览阅读231次。对于每个前端从业者来说,除了F5键之外,用的最多的另外一个键就是F12了。今天,大神(@小鱼二)推荐我一个网站,才知道chrome还有各种骚姿势。网站是:umaar.com/dev-tip...

【jeecg-boot】jeecg-boot的一些功能扩展:-程序员宅基地

文章浏览阅读2k次。【jeecg-boot】jeecg-boot的一些功能扩展:_jeecg-boot

gitlab上克隆远程分支到本地(报错-error: RPC failed; curl 18 transfer closed with outstanding read data remaining)_gitlab 18: transfer closed with outstanding read d-程序员宅基地

文章浏览阅读2.7k次。首先确保你的电脑有安装git环境,本人使用的是windows下的git环境。双击桌面图标 的Git Bash 打开窗口修改配置git config --global user.namegit config --global user.email如:git config --global user.name "muzidigbig"git config --glo..._gitlab 18: transfer closed with outstanding read data remaining

随便推点

小帅的七个男友 第一章 未恋先失-程序员宅基地

文章浏览阅读164次。第一章 未恋先失&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;初中时代的我,还是一个单纯的女孩,对于爱情,以为是眼泪制造出来的。我的圈子并不大,只有几个要好的女生,彭老二,周薇,秋毛。彭老二是个大嘴,校园里发生了什么事情她总是最先知道,通过她的大嘴,什么八卦新闻都逃..._操小帅

MATLAB db4小波分解与重构,语音降噪-程序员宅基地

文章浏览阅读4.4k次,点赞2次,收藏23次。小波变换3级分解Mallat图:将带噪语音作为输入信号进行逐级DWT小波分解,并将分解出的低频成分cA3cA_3cA3​与强制置0后的高频成分cD3cD_3cD3​,cD2cD_2cD2​,cD1cD_1cD1​进行小波重构。Demo:clc,clear[x,Fs]= audioread('MUsic_Test.wav');snr = 20; %设定信噪比,单位dbnoise = randn(size(x)); % 用randn函数产生高斯白噪声Nx = length(x_db4小波

安装和配置SNMP(windows10和Linux)--附SNMP客户端工具_snmp工具-程序员宅基地

文章浏览阅读8.3k次,点赞5次,收藏34次。首先需要安装 snmp ,使用下面的命令进行安装安装完毕之后,使用下面的命令查看是否安装成功当命令行显示如图即为安装成功。_snmp工具

如何正确的敲键盘(打字习惯改正)_怎么敲键盘-程序员宅基地

文章浏览阅读6.4k次,点赞5次,收藏40次。练习打字的官网:http://dazi.kukuw.com/关于打字的详细介绍:一个过来人的打字指法纠正之路_怎么敲键盘

网络安全解决方案-程序员宅基地

文章浏览阅读9.6k次,点赞3次,收藏68次。一,网络安全体系结构网络安全体系结构是对网络信息安全基本问题的应对措施的集合,通常由保护,检测,响应和恢复等手段构成。1,网络信息安全的基本问题研究信息安全的困难在于:边界模糊数据安全与平台安全相交叉;存储安全与传输安全相制约;网络安全,应用安全与系统安全共存;集中的安全模式与分权制约安全模式相互竞争等。评估困难安全结构非常复杂,网络层,系统层,应用层的安全设备,安全协议和安全程序构成一个有机的整体,加上安全机制与人的互动性,网络的动态运行带来的易变性,使得评价网络安全性成为极_网络安全解决方案

QGIS在Windows下的编译——QGIS3.28.15 + Qt5.15.3 +CMake3.28.0 + VS2022 ---64位版本_qgis windows编译-程序员宅基地

文章浏览阅读1.2k次,点赞22次,收藏29次。QGIS在Windows下的编译——QGIS3.28.15 + Qt5.15.3 +CMake3.28.0 + VS2022 ---64位版本_qgis windows编译

推荐文章

热门文章

相关标签