大一学习c语言积攒的家当,一次性发出来
题目全部来自xdoj题库
题解算是比较优的解法吧

文章目录

  • 前言
  • 分解质因数
  • 质数之和
  • 单词统计
  • 车牌限行
  • 目录操作
  • 字符串相似度
  • 分配宝藏
  • 分宝物
  • 元素放置
  • 进制转换
  • 螺旋方阵
  • 统计小写字母出现的次数
  • 判断字符串回文
  • 求解星期
  • 总结

前言

提示:之后还会不断更新 部分代码来自于网络


提示:有问题的地方欢迎在评论区留言欢迎提出宝贵建议

分解质因数

题目描述:
每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,
这几个素数就都叫做这个合数的质因数。编写程序将一个正整数分解质因数输入描述:
输入一个正整数n(2<n<1000)输出描述:
形如a*b*b*c,质因数按照从小到大的顺序排列输入样例:
90输出样例:
2*3*3*5
//破解方法:只需要从最小的质数开始除,不要想复杂,很多编程问题其实就是数学问题
#include<stdio.h>
int main()
{int n;
scanf("%d",&n);
//把n从质数2开始除,直到除不开
//例如n本来有一个因数为4,连续除两次2就等效
for (int i = 2; i <=n ; ++i)
{while(i!=n){//在这个循环中能进入判断的就只剩质数了if (n%i==0){printf("%d*",i);n/=i;}else break;    }
}
printf("%d",n);return 0;
}

质数之和

问题描述 输入一个大于20的正整数p,求出正整数范围内第p个质数(或素数,大于1且只能被1和自己整除的正整数,)到第p+10个质数之和。其中,第1个质数为2,第2个质数为3,第3个质数为5,第4个质数为7,依次类推。
输入说明 :一行输入1个整数p,20< p <150。 输出说明 第p个质数到第p+10个质数之和。
输入样例: 21
输出样例: 1081

//
#include <stdio.h>
#include <stdlib.h>int isprime(int x,int knownprimes[],int numberofknownprimes);
int prime[2000];int main(int argc, char const *argv[])
{int p;scanf("%d",&p);prime[0] = 2;int count=1;//已知质数的个数
int i=3;//除已知的质数2以外第一个质数
//找质数
while (count<=p+10){if (isprime(i ,prime,count)){  prime[count++]=i;}i++;
}int sum;//质数和
for (int i = p-1; i < p+10; ++i)
{sum+=prime[i];
}
printf("%d",sum );return 0;
}int isprime(int x,int knownprimes[],int numberofknownprimes)
{int ret=1;for (int i=0 ;i<numberofknownprimes;i++){if (x%knownprimes[i]==0){ret=0;break;}
}return ret;
}
#include<stdio.h>
#include<math.h>
int main()
{int i,inum=1,isum=0;int p;int ret;scanf("%d",&p);for(i=3;;i++){ret=1;for(int j=2;j<=sqrt(i);j++){if(i%j==0) ret=0;}if(ret){  inum++;if(inum>=p&&inum<=p+10)isum+=i;}else if(inum>p+10)break;}
printf("%d",isum);return 0;
}

累加和校验

类别
流程控制

时间限制
1S

内存限制
256Kb

问题描述
数据传输中一种常见的校验方式是累加和校验。其实现方式是在一次通讯数据包的最后加入一个字节的校验数据。
这个校验字节内容为前面数据包中所有数据按字节累加所得结果的最后一个字节。例如:
要传输的信息为: TEST(ASCII码为0x54,0x45,0x53,0x54)
四个字节的累加和为:0x54+0x45+0x53+0x54=0x140
校验和为累加和的最后一个字节,即0x40,也就是十进制的64
现在请设计一个程序计算给出的待传输信息的累加校验和

输入说明
输入为一个字符串,字符串长度不超过100个字符

输出说明
输出一个十进制整数,表示输入字符串的累加校验和。

输入样例
TEST
输出样例
64

int main()
{char str[101]={'\0'};
gets(str);
int i, sum=0;for(i=0;'\0'!=str[i];i++)sum+=str[i];printf("%d\n",sum&0xFF);
return 0;
}/*例如,有个数字 0x1234,如果只想将低8位写入到内存中 0x1234&0xff
0x1234 表示为二进制 00010010001101000xff 表示为二进制 11111111两个数做与操作,显然将0xff补充到16位,就是高位补0此时0xff 为 0000000011111111与操作 1&0 =0 1&1 =1 这样 0x1234只能保留低八位的数 0000000000110100 也就是 0x34*/
#include <stdio.h>int main(void)
{char ch;int res = 0;while ((ch = getchar()) != EOF)res += ch;printf("%d\n", res % 256);return 0;
}

单词统计

题目描述:
输入字符串string[N](N≤100),各个单词以空格隔开,单词长度小于等于8,输入单词word[M](M≤8),
在string中查找出相同的单词并统计该单词出现的次数信息,单词不区分大小写,
输出单词和出现次数的信息,数据之间空一格空格。
主函数输入字符串和待统计单词,编写函数count()实现统计和信息输出输入描述:
输入一行字符以空格隔开各个单词,输入要统计的单词。输出描述:
输出单词及其出现的次数信息,数据之间空一格。输入样例:
To be or not to be is a question
to输出样例:
to 2
  • 1
#include<stdio.h>
#include<string.h>void count(char a[], char b[])
{int i, j, num = 0;//i标记每个单词的第一位 for (i = 0; i < strlen(a); ){int flag = 0; //flag用来统计每个单词和word比较的次数 for (j = 0; a[i + j] != ' ' && a[i + j] != '\0'; j++)//注意最后一个单词末尾是'\0'不是' ' {if (a[i + j] == b[j]){flag += 1;}}i = i + j + 1;//i标记下一个单词的开头 if (flag == strlen(b)&&j==strlen(b))num++;//如果比较次数和word一样,即单词和word相同,则个数+1        }printf("%s %d", b, num);
}int main()
{char string[100], word[8];gets(string);gets(word);count(string, word);return 0;
}
  • 2

    #时隔几个月再看自己原来的代码,一个字——烂#include<stdio.h>
    #include<string.h>
    int main()
    {
    /*有想法就应该坚持下去*/
    //初始化char string[100];gets(string);int len;len=strlen(string);strlwr(string);char word[8];gets(word);
    //char temp[100];//建立临时数组来存每一个单词int i=0; int an=0;int step=0;int sum=0;for (char *p=string;*p!='\0';p=p+step)//注意指针的移动,考虑每次循环后的目的{ step=0;//指针要移动的位数for (char*s=p;*s!=' '; ++s){if(s-string>len) break;temp[i]=*s;i++;step++;}temp[i]='\0';step++;sum+=step;//int a=strcmp(temp,word);//printf("#%s",temp);/*多调试*/if (!(strcmp(temp,word))){an++;strcpy(temp," ");i=0;}else{i=0;strcpy(temp," ");}}strcpy(temp," ");i=0;for(char*last=string+sum;*last!='\0';last++){temp[i]=*last;i++;  }if (!(strcmp(temp,word))){an++;}printf("%s %d",word,an);return 0;} 

    车牌限行

    时间限制: 1 秒
    内存限制: 256KB

    问题描述 问题描述
    受雾霾天气影响,某市决定当雾霾指数超过设定值时对车辆进行限行,假设车牌号全为数字,且长度不超过6位,限行规则如下:
    (1)限行时间段只包括周一至周五,周六周日不限行;
    (2)如果雾霾指数低于200,不限行;
    (3)如果雾霾指数大于等于200且低于400,每天限行两个尾号的汽车,周一限行1和6,周二限行2和7,周三限行3和8,周四限行4和9,周五限行5和0;
    (4)如果雾霾指数大于等于400,每天限行五个尾号的汽车,周一、周三和周五限行1,3,5,7,9,周二和周四限行0,2,4,6,8。

    现在给出星期几、雾霾指数和车牌号,判断该车牌号是否限行。

    输入说明
    输入分为三个整数,第一个整数表示星期几(1~7,1表示周一,2表示周二,依次类推,7表示周日),
    第二个整数表示雾霾指数(0~600),第三个整数表示车牌号,整数之间用空格分隔。

    输出说明
    输出为两个部分,第一部分为车牌最后一位数字,第二部分为限行情况,限行输出yes,不限行输出no。

    输入样例
    输入样例1
    4 230 80801
    输入样例2
    3 300 67008

    输出样例
    输出样例1
    1 no
    输出样例2
    8 yes

#include<stdio.h>
int main()
{
int n,t,i,a,b,x;
scanf(“%d%d%d”,&x,&t,&n);
n=n%10;
printf("%d ",n);
if(x6||x7)
printf(“no”);
else
{

   if(t<200)printf("no");else if(t>=200&&t<400){if(n==x||n==x+5||n==x-5)printf("yes");elseprintf("no");}else{if(n%2==x%2)//利用奇数与偶数的特点简化步骤printf("yes");elseprintf("no");}}return 0;

}

# 单词排序描述
定义一个二维字符数组str[10][20],行号表示单词序号,列号表示单词最大长度,输入一个正整数N(N≤10),表示单词数,使用函数wd_sort()完成单词的排序,按字母顺序从小到大排列单词,使用指针完成地址传递,主函数完成数组输入和输出。时间限制
1   内存限制
10000   类别
1输入说明
输入一个二维字符数组str和一个正整数N,行号表示单词序号,列号表示单词最大长度。输出说明
格式输出:单词之间空一行。输入样例
3
word fish egg
输出样例
egg
fish
word提示
使用指针作形参,实现地址传递。
数组定义后初始化。
使用strcmp()、strcpy()和strlen()函数,头文件string.h。```c
#include<stdio.h>
#include<string.h>
void wd_sort(char (*str)[20],int n);
int main()
{   char str[10][20];int n,i;scanf("%d",&n);for(i=0;i<n;i++){scanf("%s",&str[i]);}wd_sort(str,n);for(i=0;i<n;i++){printf("%s\n",str[i]);}return 0;
}
void wd_sort(char (*p)[20],int n)
{   int j,i;char temp[20];for(i=0;i<n-1;i++)for(j=0;j<n-i-1;j++){if(strcmp(*(p+j),*(p+j+1))>0){strcpy(temp,*(p+j));strcpy(*(p+j),*(p+j+1));strcpy(*(p+j+1),temp);}  }
}

目录操作

问题描述

在操作系统中,文件系统一般采用层次化的组织形式,由目录(或者文件夹)和文件构成,形成一棵树的形状。

有一个特殊的目录被称为根目录,是整个文件系统形成的这棵树的根节点,在类Linux系统中用一个单独的 “/”符号表示。

因此一个目录的绝对路径可以表示为“/d2/d3”这样的形式。

当前目录表示用户目前正在工作的目录。为了切换到文件系统中的某个目录,可以使用“cd”命令。

现在给出初始时的当前目录和一系列目录操作指令,请给出操作完成后的当前目录。

假设当前目录为“/d2/d3”,下图给出了cd命令的几种形式,以及执行命令之后的当前目录。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nOnyYA8N-1646924572434)(C:\Users\86132\AppData\Roaming\Typora\typora-user-images\image-20220228230739687.png)]

输入说明

第一行包含一个字符串,表示当前目录。

后续若干行,每行包含一个字符串,表示需要进行的目录切换命令。

最后一行为pwd命令,表示输出当前目录

注意:

  1. 所有目录的名字只包含小写字母和数字,cd命令和pwd命令也都是小写。最长目录长度不超过200个字符。

  2. 当前目录已经是根目录时,cd … 和cd /不会产生任何作用

输出说明

输出一个字符串,表示经过一系列目录操作后的当前目录

输入样例

/d2/d3/d7

cd …

cd /

cd /d1/d6

cd d4/d5

pwd

输出样例

/d1/d6/d4/d5

#include <stdio.h>
#include <string.h>int main()
{char s[201]={},str[201]={},a[4];    /*最长目录长度为两百个字符,数组长度定义为201绝对不会出问题其中s数组为当前目录,str数组为输入的目录切换命令(不包含cd),a数组则储存cd或pwd把cd与后面的命令分别储存到两个数组中使得string.h中的一些函数得以使用,十分方便*/int i,len=0;    //经常需要用到数组s的长度,总不能每次都strlen(s)吧,那样运行速度会很慢gets(s);while(1){scanf("%s",&a);//有空格中断getchar(); /*这里的getchar不能少,在命令行中用scanf函数做标准输入,只要你是以换行符(也就是回车键)结束输入并且你不是用scanf读取单个字符,那么这个换行符就会被放到输入缓冲区中。*/if(!strcmp(a,"pwd"))break;  //a数组为pwd则结束输入gets(str);len=strlen(s);if(str[0]=='.') //说明输入为cd ..{i=1;while(s[len-i]!='/')    //把最后一级目录所对应的字符串清零直到遇到'/'{s[len-i]='\0';++i;}s[len-i]='\0';  //。。。if(!strlen(s))s[0]='/'; //如果s数组长度为0,则说明cd ..后回到了根目录}else if(str[0]=='/')//绝对路径,完全替代{strcpy(s,str);  //不管'/'后面是什么,一个strcpy轻松搞定}else// if('a'<=str[0]&&str[0]<='z'){if(len>1)s[len]='/';    //如果当前目录为根目录则不需要加'/'strcat(s,str);  //strcat后接}}printf("%s",s);return 0;
}

字符串相似度

最长公共子串指给定的两个字符串之间最长的相同子字符串(忽略大小写),最长公共子串长度可用来定义字符串相似度。
现给出两个字符串S1和S2,S1的长度为Len1,S2的长度为Len2,假设S1和S2的最长公共子串长度为LCS,则两个字符串的相似度定义为2LCS/(Len1+Len2)。
例如:S1=”App”,S2=”apple”,S1长度为3,S2长度为5,它们的最长公共子串为”App”,长度为3,则相似度为2
3/(3+5)=0.75。
现给出两个字符串,请计算它们的相似度结果保留3位小数。

输入说明
输入为两行,分别表示两个字符串S1和S2,每个字符串长度不超过100个字符,所有字符均为可打印字符,包括大小写字母,标点符号和空格。

输出说明
输出两个字符串的相似度,结果四舍五入保留3位小数。

输入样例
App
Apple

输出样例
0.750

#include<stdio.h>
#include<string.h>
#include <math.h>
int main()
{char s1[101], s2[101], t[101];int i, j;float len1, len2, max = 0.0;int a[100][100] = { 0 };float similar;gets(s1);gets(s2);len1 = strlen(s1);len2 = strlen(s2);for (i = 0; i < len1; i++){for (j = 0; j < len2; j++){if (s1[i] == s2[j] || abs(s1[i] - s2[j]) == 32){if (i != 0 && j != 0)a[i][j] = a[i - 1][j - 1] + 1;else a[i][j] = 1;}}}for (i = 0; i < len1; i++){for (j = 0; j < len2; j++){if (a[i][j] > max) max = a[i][j];}}similar = 2 * max / (len1 + len2);printf("%.3f", similar);
}

分配宝藏

问题描述
两个寻宝者找到一个宝藏,里面包含n件物品,每件物品的价值分别是W[0],W[1],…W[n-1]。
SumA代表寻宝者A所获物品价值总和,SumB代表寻宝者B所获物品价值总和,请问怎么分配才能使得两人所获物品价值总和差距最小,即两人所获物品价值总和之差的绝对值|SumA - SumB|最小。

输入说明
输入数据由两行构成:
第一行为一个正整数n,表示物品个数,其中0<n<=200。
第二行有n个正整数,分别代表每件物品的价值W[i],其中0<W[i]<=200。

输出说明
对于每组数据,输出一个整数|SumA-SumB|,表示两人所获物品价值总和之差的最小值。

输入样例
4
1 2 3 4

输出样例
0

#include<stdio.h>
int W[201], sum, dp[201][20001];    //[201]是便于将物品从1开始编号//[20001]同理
int max(int a,int b);
int main(void)
{int n, i, j, sumA;             //假设A得到的永远是较少的那个scanf( "%d", &n);for(i = 1; i <= n; i++){  i代指第i个物品scanf( "%d", &W[i] );sum += W[i];}for(i = 1; i <= n; i++){if (W[i] > sum/2){          //如果物品某个价值大于总价值的一半,其余物品将给A,不需要再计算dp[n][sum/2] =sum-W[i];break;}for(j = 1; j <= sum/2; j++){//j指看第i个物品时背包剩余容量if(W[i] > j)          //同样的,物品重量大于背包剩余容量,不偷dp[i][j] = dp[i-1][j];else dp[i][j] = max( dp[i-1][j] , dp[i-1][j-W[i]] + W[i]);}}sumA = dp[n][sum/2];//个人比较喜欢单一出口printf("%d\n", sum - 2 * sumA);//因为A总是得到较少的那个,不需要再加上绝对值return 0;
}
int max(int a,int b){int m = a;if( a < b) m = b;return m;
}

分宝物

#include <stdio.h>
//#include <math.h>
int w[5];
int prime[30] = {-1,};int main(int argc, char const *argv[])
{   int cnt = 1;for (int i = 2; cnt < 30; i++){   bool isprime = 1;for (int j = 2; j < i&&isprime; j++){if(i%j==0) isprime = 0;}if(isprime) {prime[cnt++] = i;}}int n;scanf("%d",&n);int sum = 0;for (int i = 0; i < 5; i++){w[i] = prime[n+i];sum += w[i];}//     printf("%d", 1<<5);int takeOrNot[5];int min = 10000;for (int i = 0; i < 1<<5; i++){   int temp = i;
//        printf("temp = %d\n",temp);for (int j = 0; j < 5; j++){takeOrNot[j] = temp%2;
//            printf("%d\n",takeOrNot[j]);temp /= 2;}
//                printf("\n");int sumA = 0;for (size_t i = 0; i < 5; i++){
//          printf("%d ",takeOrNot[i]);if(takeOrNot[i]) sumA += w[i];}
//        printf("\n");int delta = (sum - sumA - sumA)>0?(sum - sumA -sumA):-(sum - sumA -sumA);if(delta<min) min = delta;}printf("%d",min);return 0;
}

元素放置

描述
定义一个一维整形数组num[50],输入正整数m、n(2≤m≤n≤7),输入一个m*n整形矩阵(值小于100),编写函数place()完成矩阵元素S型放置,从小到大排列,使用指针完成地址传递,主函数完成数组输入和输出。

时间限制
1

内存限制
10000

类别
1

输入说明
输入正整数m和n(2≤m≤n≤7),输入一个mn整形矩阵,含mn个元素(值小于100)。

输出说明
格式输出:按行输出处理后的矩阵,S型排列,%3d,每行换行,最后一行不换行。

输入样例
3 3
15 14 21
34 22 37
40 16 50

输出样例
16 15 14
21 22 34
50 40 37
提示
使用指针作形参,实现地址传递,S型排列,%3d,每行换行,最后一行不换行。

#include <stdio.h>
#include <stdlib.h>int compare(const void*a,const void*b)
{return(*(int*)a-*(int*)b);
}void place(int*array, int n, int m, int (*s)[7])
{int i, j;for (i = 0; i < m; i++){if (i % 2 == 0){for (j = n - 1; j >= 0; j--)s[i][j] = *array++;}else{for (j = 0; j < n; j++)s[i][j] = *array++;}}
}
int main(int argc, char const *argv[])
{int n,m;scanf("%d %d",&n,&m);int s[7][7];int array[50];for (int i = 0; i < n*m; ++i){scanf("%d",&array[i]);}qsort(array,n*m,sizeof(int),compare);/*函数功能:qsort()函数的功能是对数组进行排序,数组有nmemb个元素,每个元素大小为size。参数base       - base指向数组的起始地址,通常该位置传入的是一个数组名
参数nmemb  - nmemb表示该数组的元素个数
参数size        - size表示该数组中每个元素的大小(字节数)
参数(*compar)(const void *, const void *) - 此为指向比较函数的函数指针,决定了排序的顺序。*/place(array,n,m,s);for (int i = 0; i < n; i++){for (int j = 0; j < m; j++)printf("%3d", s[i][j]);printf("\n");}return 0;
}

进制转换


  • 问题描述
    将十进制数转为其他进制数输出。
  • 输入说明
    输入两个整数,分别表示十进制下的数字a(0≤a≤(2^31)-1)和进制N(2≤N≤9),整数之间使用空格分隔。
  • 输出说明
    输出十进制数字a的N进制表示。
  • 输入样例
    17 7
  • 输出样例
    23
#include <stdio.h>int main()
{int ans[10000], tot = 0, a, n;scanf("%d%d", &a, &n);while (a > 0) //使用短除法转换进制。因为短除法的结果需要倒序输出,所以用ans数组存下每步求余数的结果{ans[++tot] = a % n;a /= n;}for (int i = tot; i > 0; i--)printf("%d", ans[i]);
}

螺旋方阵


  • 问题描述
    螺旋方阵是指一个呈螺旋状的矩阵,它的左上角元素为1,由第一行开始按从左到右,从上到下,从从右向左,从下到上的顺序递增填充矩阵,直到矩阵填充完毕,下图所示是一个5*5阶的螺旋方阵。输入螺旋方阵的阶数N,按行输出该螺旋方阵。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-byqaxsAW-1646924572437)(images/1.png)]
  • 输入说明
    输入一个正整数N(1<N<=100)。
  • 输出说明
    逐行输出N阶螺旋方阵的元素,元素之间用空格分隔。
  • 输入样例
    6
  • 输出样例
    1 2 3 4 5 6
    20 21 22 23 24 7
    19 32 33 34 25 8
    18 31 36 35 26 9
    17 30 29 28 27 10
    16 15 14 13 12 11

代码1

#include <stdio.h>
int a[110][110];
const int dx[4] = {0, 1, 0, -1}, dy[4] = {1, 0, -1, 0};
//向量(dx[i],dy[i])表示下一步移动的方向,i=0:右,i=1:下,i=2:左,i=3:上
//(0,1)
//(1,0)
//(0,-1)
//(-1,0)
//(x,y)
int main()
{int n, k = 0, x = 1, y = 1;scanf("%d", &n);for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)a[i][j] = -1; //在需要填数字的范围挖个坑for (int i = 1; i <= n * n; i++){a[x][y] = i;                      //填写数字if (a[x + dx[k]][y + dy[k]] >= 0) //如果下一步走到了没挖坑的位置或者已经填上的位置k = (k + 1) % 4;              //那么切换到下一个方向(如果是3方向要换回0方向,所以对4求余数)x += dx[k], y += dy[k];           //走一步}for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++)printf("%d ", a[i][j]);puts("");}
}

统计小写字母出现的次数

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char const *argv[])
{char str[50];//声明接收字符串的数组int count[26]={0};//声明统计次数的数组gets(str);
//  for (int i = 0; i < 50; ++i)
//  {//      scanf("%c",&str[i]);
//  }//输入
//  int i = 0;
//  while (scanf("%c",&str[i++])==1); for (int i = 0; i < 50; ++i){int number=str[i]-'a';//字母在ASCALL码地位置count[number]++;//对应位置计数}for(int i=0;i<26;i++){if (count[i]>0){printf("%c %d\n",'a'+i,count[i]);}}return 0;
}

判断字符串回文

#include <stdio.h>
#include <string.h>
int main(int argc, char const *argv[])
{char a[1024];gets(a);int count;count=strlen(a);char *star=a;char *end=&a[count-1];int ret=1;while(end>star){if (*end!=*star){ret=0;break;}else{end--;star++;}}if (ret){printf("yes\n");}elseprintf("no\n");return 0;
}

求解星期

已知2021年11月14日为星期天,输入之前的任意一个年份的时间,
求解是星期几。
说明:输入是三个整数,第一个表示年份,第二个表示月份,第三个表示
日期,比如2020年11月5日为2020 11 5,之间以空格隔开;输入是对应英文单词,
是星期4,为Thursday,首字母大写,其余小写。提示,星期一到星期天对应
英文是Monday, Tuesday, Wendnesday, Thursday,Friday, Saturday和Sunday。
输入示例1:
2020 11 5
输出示例1:
Thursday

输入示例2:
2021 6 2
输出示例2:
Wendnesday

#include <stdio.h>
int leap(int year);
int main() {int day1 = 0, day2 = 0;int year, month, day;int interval;scanf("%d %d %d", &year, &month, &day);int m[13] = {-1, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
//流氓算法,不是特别推荐day1 += day;for (int i = 1; i < month; ++i) {day1 += m[i];}for (int i = 1; i < year; i++) {day1 += 365;if (leap(i))day1++;}//   printf("%d\n", day1);day2 += 14;for (int i = 1; i < 11; ++i) {day2 += m[i];}for (int i = 1; i < 2021; ++i) {day2 += 365;if (leap(i)) {day2++;}}// printf("%d\n", day2);interval = day2 - day1;int  judge = interval % 7;
//      printf("%d",sum);switch (judge){case 0:printf("Sunday"); break;case 1:printf("Saturday"); break;case 2:printf("Friday"); break;case 3:printf("Thursday"); break;case 4:printf("Wendnesday"); break;case 5:printf("Tuesday"); break;case 6:printf("Monday"); break;default:break;}return 0;
}int leap(int year) {if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))return 1;return 0;
}

总结

有问题直接评论留言

c语言经典题(期中/期末复习)(xdoj)相关推荐

  1. C语言经典题10道之古典问题: 兔子生兔问题

    //2.古典问题: 有一对兔子, 从出生后第三个月起每个月都生一对兔子, 小兔子长到第三个月后每个月又生一对兔子, 假如兔子都不死, 每个月的兔子总数为多少?//根据题找到规律 1对, 1对, 2对, ...

  2. (C语言经典题)有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数,

    解题思路 1 2 3 4 5 6 7 8 9 前面都向后移动2的话 8 9 1 2 3 4 5 6 7 可以看出就是8 9 换到前面了 先保存最后一位的值9,然后前面的所有数字后移一位,再把9放到第一 ...

  3. 算法设计与分析(Algorithm Design )课后习题作业+期末复习+期末习题

    课后习题作业资源链接 期末复习+期末习题资源链接 对应的书(不是算法导论):算法设计与分析(Algorithm Design ) Jon KIeinberg 著 张立昂 屈婉玲 译 有这本书中英文版. ...

  4. 天津工业大学c语言题库,天津工业大学it1创新2届c语言期末复习.ppt

    天津工业大学it1创新2届c语言期末复习 复习;题型;第一章 数据类型.运算符.表达式;1. 数据类型;C语言提供的整数类型 short int (short) unsigned short int ...

  5. c语言输出矩形及对角线,[新]C语言期末复习,经典练习题+知识点总结+模拟考题 三位一体,完胜c语言!!!!考期必备神器...

    C语言期末复习(平时练习答案) [特别适用于千千万北航学子] 考试重点:(编程题)排序,选择与冒泡排序,,各种进制转换....] 第二次大作业- 前驱.后继字符 1. [问题描述] 从键盘输入一个字符 ...

  6. Linux期末复习编程题

    Linux期末复习编程题 0.先说说编程需要注意的点吧 1.if条件语句 2.乘法口诀表 3.自动删除50个账号 4.菜单设计 0.先说说编程需要注意的点吧 如果是if 条件时,需要注意每个字符都要用 ...

  7. 大学c语言项目,项目大学C语言程序设计期末复习重点.doc

    期末复习课 笔试试卷基本情况 1.单项选择(本题共15个小题,每题2分.30分) 在四个备选答案中选择一个正确的.答案唯一. 2.阅读程序选择运行结果(本题共有8个小题,每个题3分.24分) 考核基本 ...

  8. c语言运行k值不变,C语言期末复习(改完).doc

    C语言期末复习(改完).doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档 ...

  9. 周红c语言答案,C语言程序设计期末复习.ppt

    <C语言程序设计期末复习.ppt>由会员分享,可在线阅读,更多相关<C语言程序设计期末复习.ppt(156页珍藏版)>请在人人文库网上搜索. 1.C 程序设计 锦城学院电子系 ...

  10. R语言期末复习资料----助力高绩点

    多元统计分析及R语言建模(第四版) R语言期末复习资料 第一章 多元统计分析概述 1.列出常用的统计软件,说明其使用范围和各自的优缺点 解: (1)SAS:组合软件系统,入门比较困难 (2)SPSS: ...

最新文章

  1. Apache将整合Google Wave功能
  2. 计算机基础知识与基本操作文档,计算机基础知识与基本操作——图文混排课件...
  3. LYNC显示用户位置的相关配置
  4. 基于HTML5 WebGL实现 json工控风机叶轮旋转
  5. android3.2以上切屏禁止onCreate()
  6. thinkphp回调的php调用db类,请问thinkphp中model类自动完成功能 回调函数能不能获取其他字段的值?...
  7. less入门及基础学习(建议有css基础)
  8. ajax请求接口连不上会报错吗_服务端有异常, 导致: Ajax 请求报错 net::ERR_INCOMPLETE_CHUNKED_ENCODING...
  9. python 下载或者直接读取csv文件
  10. 扫雷win10_厉害了,一个自动扫雷游戏项目!
  11. 用时一个半个月,七月刚入职字节跳动的测试开发面试题,内附答案
  12. DirectAdmin
  13. 1688按图搜索商品(拍立淘)获取数据的教程
  14. Python之绘制七段数码管
  15. Vue笔记:图书购物车案例
  16. 软通动力-Java初级
  17. 【自动驾驶】杜明芳:基于多尺度IPM图的车道线检测实现
  18. 魔性,用 Python 实现火爆全网的「蚂蚁呀嘿」视频特效!
  19. 大学计算机基础打字评分标准,大学计算机基础程标准.doc
  20. python 随机森林可视化

热门文章

  1. 韩顺平oracle教学笔记,韩顺平oracle视频笔记一
  2. Lenovo Quick Fix 联想智能解决工具
  3. 区块链社会:解码区块链全球应用与投资案例
  4. 笔记:《深入浅出统计学》第十四章:卡方分布
  5. sql优化的N种方法_持续更新
  6. 台式机黑苹果 Mojave 10.14.6 安装驱动
  7. 一个黑客都要学习什么语言呢?
  8. VUE页面中加载外部HTML
  9. 几款Mac下载神器推荐,让你相见恨晚的MacBook神器
  10. c#和明华RF-35LT开发通信