第一题:输出结果。
https://paste.ubuntu.com/p/t5MqCRSg6y/
#include<stdio.h>
int main()
{
char ch1=189;
unsigned char ch2=189;
printf("ch1=%d\t ch2=%d\n",ch1,ch2);
//答案:
//ch1=-67 ch2=189
//分析:-67 是以补码形式输出,如果是无符号位,输出就是189。
return 0;
}
第二题:
方法一:
https://paste.ubuntu.com/p/z6zgPWJNZ9/
#include<stdio.h>
int main()
{
int year,month,day;
scanf("%d%d%d",&year,&month,&day);
int ans=day;
switch(month){
case 1: break;
case 2: ans+=31;break;
case 3: ans+=59;break;
case 4: ans+=90;break;
case 5: ans+=120;break;
case 6: ans+=151;break;
case 7: ans+=181;break;
case 8: ans+=212;break;
case 9: ans+=243;break;
case 10: ans+=273;break;
case 11: ans+=304;break;
case 12: ans+=334;break;
}
if(month>=3&&year%4==0&&(year%400==0||year%100!=0)){
ans++;
}
printf("%d\n",ans);
return 0;
}
方法二:
https://paste.ubuntu.com/p/CmhDrMzqNr/
#include<stdio.h>
int a[13]={0,0,31,28,31,30,31,30,31,31,30,31,30};
int main()
{
int year,month,day;
scanf("%d%d%d",&year,&month,&day);
int ans=day;
for(int i=1;i<=12;i++){
a[i]=a[i-1]+a[i];
}
/*for(int i=1;i<=12;i++){
printf("%d\n",a[i]);
}*/
switch(month){
case 1: break;
case 2: ans+=a[month];break;
case 3: ans+=a[month];break;
case 4: ans+=a[month];break;
case 5: ans+=a[month];break;
case 6: ans+=a[month];break;
case 7: ans+=a[month];break;
case 8: ans+=a[month];break;
case 9: ans+=a[month];break;
case 10: ans+=a[month];break;
case 11: ans+=a[month];break;
case 12: ans+=a[month];break;
}
if(month>=3&&year%4==0&&(year%400==0||year%100!=0)){
ans++;
}
printf("%d\n",ans);
return 0;
}
#include<stdio.h>
int main()
{
int year,month,day;
scanf("%d%d%d",&year,&month,&day);
int ans=day;
switch(month){
case 12: ans+=30;
case 11: ans+=31;
case 10: ans+=30;
case 9: ans+=31;
case 8: ans+=31;
case 7: ans+=30;
case 6: ans+=31;
case 5: ans+=30;
case 4: ans+=31;
case 3: ans+=28;
case 2: ans+=31;
case 1: break;
}
if(month>=3&&year%4==0&&(year%400==0||year%100!=0)){
ans++;
}
printf("%d\n",ans);
return 0;
}
第三题:
#include<stdio.h>
int main()
{
int a,t,i,n,ans=0;
scanf("%d%d",&a,&n);
t=a;
for(i=1;i<=n;i++){
ans+=a;
a=a*10+t;
}
printf("%d\n",ans);
}
第四题:
各位同学非常抱歉,这个题是我看错题目,说错了,请大家看一下代码理解一下吧。
希望同学们能原谅我。
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int ans[10]={0};
for(int i=1;i<=n;i++){
int temp=i;
while(temp){
ans[temp%10]++;
temp/=10;
}
}
for(int i=1;i<=10;i++){
printf("%d : %d\n",i%10,ans[i%10]);
}
return 0;
}
第五题:
#include<stdio.h>
#define N 205
int main()
{
int cnt=0;
int ans[N]; //数组开大一点。
for(int i=0;i<=9;i++){ //回文数 长度为 : 1
ans[cnt++]=i;
}
for(int i=1;i<=9;i++){ //回文数 长度为 : 2
int temp=0;
temp=i*10+i;
ans[cnt++]=temp;
}
for(int i=10;i<=99;i++){ //回文数 长度为 : 3
int temp,t=i/10;
temp=i*10+t;
ans[cnt++]=temp;
}
for(int i=10;i<=99;i++){ //回文数 长度为 : 4
int Front=i,Back=(i%10)*10+i/10,temp;
temp=Front*100+Back;
ans[cnt++]=temp;
}
//printf("%d\n",cnt); 共有199个回文数在10000内
for(int i=0;i<cnt;i++){
printf("%d\n",ans[i]);
}
return 0;
}
第六题:
方法1:
#include<stdio.h>
int dfs(int x){
if(x==1||x==2){
return x;
}
return dfs(x-1)+dfs(x-2);
}
int main()
{
int a,b;
scanf("%d%d",&a,&b);
int ans=dfs(b-a);
printf("%d\n",ans);
return 0;
}
方法2:
#include<stdio.h>
int main()
{
int a,b;
scanf("%d%d",&a,&b);
int f1=1,f2=2,f3;
if(b-a==1){
printf("1\n");
}else if(b-a==2){
printf("2\n");
}else{
for(int i=3;i<=b-a;i++){
f3=f1+f2;
f1=f2;
f2=f3;
}
printf("%d\n",f3);
}
return 0;
}