题目链接:
https://www.patest.cn/contests/gplt
所有一区的题都是用c语言编写的,都通过了,有的可能设计的比较复杂。仅供参考,同时也感谢网上的一些大佬们提供的思路。如果有疑问,每题详解可以点击
http://www.cnblogs.com/czlm520/category/1148999.html
查看。那是我做每一题完后写的一些注意点和思路。
L1-001
Hello World
#include<stdio.h>
int main()
{
printf("Hello World!\n");
return 0;
}
L1-002
打印沙漏
#include<stdio.h>
#include<math.h> //无论是否剩余,都要输出剩余数。。。。。加判断输入是否满足要求???
int main()
{
int N,n;
char ch;
scanf("%d %c",&N,&ch);
n=sqrt((N+1)/2);
for(int i=n;i>=-n;i--)
{
for(int j=1;j<=n-abs(i);j++)
printf(" ");
for(int j=1;j<=2*abs(i)-1;j++)
printf("%c",ch);
printf("\n");
if(i==1) //当i减到1时跳到-1
i-=2;
}
// if(N-2*n*n+1 && N) 未剩余,仍要打印剩余数。
printf("%d\n",N-2*n*n+1);
return 0;
}
L1-003 个位数统计
#include<stdio.h>
#include<string.h>
int main()
{
char ch[1000];
int N[10]={0};
scanf("%s",&ch);
for(int i=0;i<strlen(ch);i++)
N[ch[i]-48]++;
for(int i=0;i<10;i++)
{
if(N[i])
printf("%d:%d\n",i,N[i]);
}
return 0;
}
L1-004
计算摄氏温度
#include<stdio.h>
int main()
{
int F;
scanf("%d",&F);
printf("Celsius = %d\n",5*(F-32)/9);
return 0;
}
L1-005
考试座位号
#include<stdio.h>
int main()
{
int N,n;
int cx[1000],sj[1000],ks[1000];
char str[1000][14+1];
scanf("%d",&N);
for(int i=0;i<N;i++)
{
scanf("%s %d %d",&str[i],&sj[i],&ks[i]);
}
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&cx[i]);
}
for(int i=0;i<n;i++)
{
for(int j=0;j<N;j++)
{
if(cx[i]==sj[j])
printf("%s %d\n",str[j],ks[j]);
}
}
return 0;
}
L1-006. 连续因子
#include<stdio.h>
#include<math.h>
int main()
{
int n,i;
scanf("%d",&n);
int max_length,max_start;
max_length=0,max_start=0;
for(i=2;i<=sqrt(n)+1;i++)
{
if(n%i==0) //找到第一个被能被整除的数
{
int j,nn,start,length;
nn=n;
start=i;
j=i;
length=0;
while(nn%j==0)
{
nn/=j; //新的被除数
j++; //新的除数
length++; //长度加一
}
if(length>max_length) //找到更长的连续因子
{
max_length=length;
max_start=start;
}
}
}
if(max_length==0) //素数;
{
max_start=n;
max_length=1;
}
printf("%d\n",max_length);
printf("%d",max_start);
for(i=max_start+1;i<max_start+max_length;i++)
printf("*%d",i);
printf("\n");
return 0;
}
L1-007. 念数字
#include<stdio.h>
#include<string.h>
int main()
{
char num[100];
int i;
scanf("%s",&num);
if(num[0]=='-')
printf("fu "),i=1;
else
i=0;
for(i;i<strlen(num);i++)
{
switch(num[i]-48)
{
case 0:printf("ling");break;
case 1:printf("yi");break;
case 2:printf("er");break;
case 3:printf("san");break;
case 4:printf("si");break;
case 5:printf("wu");break;
case 6:printf("liu");break;
case 7:printf("qi");break;
case 8:printf("ba");break;
case 9:printf("jiu");break;
default:break;
}
if(i<strlen(num)-1) printf(" ");
}
return 0;
}
L1-008. 求整数段和
#include<stdio.h>
int main()
{
int A,B,Sum=0;
scanf("%d %d",&A,&B);
for(int i=1;i<=B-A+1;i++)
{
Sum+=i+A-1;
printf("%5d",i+A-1);
if(!(i%5)) printf("\n");
}
if(((B-A+1)%5)) printf("\n"); //数未排满, 转行
printf("Sum = %d",Sum);
return 0;
}
L1-009. N个数求和
#include<stdio.h>
#include<math.h>
struct fengshu{
long long fz;
long long fm;
};
struct fengshu sum(struct fengshu fs[],int n)
{
struct fengshu sum;
sum.fz=0,sum.fm=1;
for(int i=0;i<n;i++)
{
sum.fz=sum.fz*fs[i].fm +sum.fm*fs[i].fz;
sum.fm=sum.fm*fs[i].fm;
}
return sum;
}
long long gy(long long a,long long b) //求最大公约数的递归函数
{
return b == 0 ? a : ( gy(b, a%b) );
}
int main()
{
int N;
struct fengshu fs[100];
scanf("%d",&N);
for(int i=0;i<N;i++)
scanf("%lld/%lld",&fs[i].fz,&fs[i].fm); // a/b格式化输入
struct fengshu s;
s=sum(fs,N);
long long g=gy(s.fm,s.fz);
s.fm/=g,s.fz/=g;
if(s.fz==0) printf("%lld",0);
else if(abs(s.fz)<s.fm) printf("%lld/%lld\n",s.fz,s.fm);
else if(abs(s.fz)>s.fm) printf("%lld %lld/%lld\n",s.fz/s.fm,s.fz%s.fm,s.fm);
return 0;
}
L1-010. 比较大小
#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
a>b?a>c?b>c?printf("%d->%d->%d",c,b,a):printf("%d->%d->%d",b,c,a):printf("%d->%d->%d",b,a,c):b>c?c>a?printf("%d->%d->%d",a,c,b):printf("%d->%d->%d",c,a,b):printf("%d->%d->%d",a,b,c);
return 0;
}
L1-011. A-B
#include<stdio.h>
#include<string.h>
int main()
{
char strA[105],strB[105];
gets(strA);
gets(strB);
for(int i=0;i<strlen(strB);i++)
{
for(int j=0;j<strlen(strA);j++)
{
if(strA[j]==strB[i])
{
int k;
for(k=j;k<strlen(strA);k++) strA[k]=strA[k+1];
strA[k]='\0';
}
}
}
printf("%s\n",strA);
return 0;
}
L1-012. 计算指数
#include<stdio.h>
int main()
{
int n,s=1;
scanf("%d",&n);
if(n>0 && n<=10)
for(int i=0;i<n;i++) s*=2;
printf("2^%d = %d\n",n,s);
return 0;
}
L1-013. 计算阶乘和
#include<stdio.h> //段错误???????????
int js(int n)
{
if(n==1||n==0) return 1;
else return n*js(n-1);
}
int main()
{
int n,s=0;
scanf("%d",&n); //忘记加&O.O
for(int i=1;i<=n;i++)s+=js(i);
printf("%d",s);
return 0;
}
L1-014. 简单题
#include<stdio.h>
int main()
{
printf("This is a simple problem.");
return 0;
}
L1-015. 跟奥巴马一起画方块
#include<stdio.h>
int main()
{
int N,n;
char C;
scanf("%d %c",&N,&C);
if(N>=3 && N<=21)
{
if(N%2==0) n=N/2; //四舍五入
else n=N/2+1;
for(int j=0;j<n;j++) //行
{
for(int i=0;i<N;i++) printf("%c",C); //列
printf("\n");
}
}
return 0;
}
L1-016. 查验身份证
#include<stdio.h>
int main()
{
int N;
char id[100][20];
scanf("%d",&N);
int i;
for(i=0;i<N;i++)scanf("%s",id[i]);
int er;
er=0;
for(i=0;i<N;i++)
{
int sum,j;
sum=0;
for(j=0;j<17;j++)
{
if(id[i][j]<48||id[i][j]>57)
{
er++;
printf("%s\n",id[i]);
goto next;
}
}
sum=(id[i][0]-48)*7+(id[i][1]-48)*9+(id[i][2]-48)*10+(id[i][3]-48)*5+(id[i][4]-48)*8+(id[i][5]-48)*4+(id[i][6]-48)*2+(id[i][7]-48)*1+(id[i][8]-48)*6+(id[i][9]-48)*3+(id[i][10]-48)*7+(id[i][11]-48)*9+(id[i][12]-48)*10+(id[i][13]-48)*5+(id[i][14]-48)*8+(id[i][15]-48)*4+(id[i][16]-48)*2;
//sum=sum/100;
switch((sum%11))
{
case 0:
if(id[i][17]!='1')
{
printf("%s\n",id[i]);
er++;
}
break;
case 1:
if(id[i][17]!='0')
{
printf("%s\n",id[i]);
er++;
}
break;
case 2:
if(id[i][17]!='X')
{
printf("%s\n",id[i]);
er++;
}
break;
case 3:
if(id[i][17]!='9')
{
printf("%s\n",id[i]);
er++;
}
break;
case 4:
if(id[i][17]!='8')
{
printf("%s\n",id[i]);
er++;
}
break;
case 5:
if(id[i][17]!='7')
{
printf("%s\n",id[i]);
er++;
}
break;
case 6:
if(id[i][17]!='6')
{
printf("%s\n",id[i]);
er++;
}
break;
case 7:
if(id[i][17]!='5')
{
printf("%s\n",id[i]);
er++;
}
break;
case 8:
if(id[i][17]!='4')
{
printf("%s\n",id[i]);
er++;
}
break;
case 9:
if(id[i][17]!='3')
{
printf("%s\n",id[i]);
er++;
}
break;
case 10:
if(id[i][17]!='2')
{
printf("%s\n",id[i]);
er++;
}
break;
}
next:;
}
if(er==0)printf("All passed\n");
return 0;
}
L1-017. 到底有多二
#include<stdio.h>
int main()
{
char str[51];
int i,num,n;
num=0,i=0;
while(1)
{
scanf("%c",&str[i]);
if(str[i]=='\n')break;
if(str[i]=='2')num++;
i++;
}
n=i;
float er;
if(str[0]=='-')n--,er=1.5;
else er=1;
er*=(float)num/n;
if((str[i-1]-48)%2==0)er=2*er;
printf("%.2f%%\n",er*100);
return 0;
}
L1-018. 大笨钟
#include<stdio.h>
int main()
{
char h1,h2,m1,m2;
scanf("%c%c:%c%c",&h1,&h2,&m1,&m2);
if(h1=='0'||h1=='1'&&h2=='1'||h1=='1'&&h2=='2'&&m1=='0'&&m2=='0')
printf("Only %c%c:%c%c. Too early to Dang.",h1,h2,m1,m2);
else
{
int i,n;
n=(h1-48)*10+h2-48;
for(i=0;i<n-12;i++)
printf("Dang");
if(m1=='0'&&m2=='0')
printf("\n");
else
printf("Dang\n");
}
return 0;
}
L1-019. 谁先倒
#include<stdio.h>
int main(){
int a,b,n,i,j;
scanf("%d %d",&a,&b); //二人酒量
scanf("%d",&n);
i=0,j=0;
while(i<=a&&j<=b)
{
int a1,a2,b1,b2,h;
scanf("%d %d %d %d",&a1,&a2,&b1,&b2);
h=a1+b1;
if(a2==h){
if(b2!=h)i++;
}
else{
if(b2==h)j++;
}
}
if(i>a){
printf("A\n");
printf("%d\n",j);
}
else
{
printf("B\n");
printf("%d\n",i);
}
return 0;
}
L1-020. 帅到没朋友
#include<stdio.h>
int main()
{
int id[100000];
int n;
scanf("%d",&n);
int j;
while(n)
{
int nn,a;
scanf("%d",&nn);
if(nn==1)
{
scanf("%d",&a);
goto next;
}
else
{
for(j=0;j<nn;j++)
{
scanf("%d",&a);
id[a]++;
}
}
next:n--;
}
int nnn,out[100000],i;
i=0;
scanf("%d",&nnn);
for(j=0;j<nnn;j++)
{
int b;
scanf("%d",&b);
if(id[b]==0)
{
out[i]=b;
i++;
id[b]=1;
}
}
if(i==0)printf("No one is handsome\n");
else{
for(j=0;j<i;j++)
{
printf("%05d",out[j]);
if(j<i-1)printf(" ");
}
printf("\n");
}
return 0;
}
L1-021. 重要的话说三遍
#include<stdio.h>
int main(){
for(int i=0;i<3;i++)
printf("I'm gonna WIN!\n");
return 0;
}
L1-022. 奇偶分家
#include<stdio.h>
int main(){
int N,js,ou;
scanf("%d",&N);
js=0,ou=0;
while(N){
int a;
scanf("%d",&a);
if(a%2)js++;
else ou++;
N--;
}
printf("%d %d\n",js,ou);
return 0;
}
L1-023. 输出GPLT
#include<stdio.h>
#include<string.h>
int main(){
char str[10000];
scanf("%s",str);
int i,n,ng,np,nl,nt;
n=strlen(str);
ng=0,np=0,nl=0,nt=0;
for(i=0;i<n;i++)
{
switch(str[i]){
case 'g':
case 'G':
ng++;
break;
case 'p':
case 'P':
np++;
break;
case 'l':
case 'L':
nl++;
break;
case 't':
case 'T':
nt++;
break;
}
}
while(ng||np||nl||nt)
{
if(ng){
printf("G");
ng--;
}
if(np){
printf("P");
np--;
}
if(nl){
printf("L");
nl--;
}
if(nt){
printf("T");
nt--;
}
}
printf("\n");
return 0;
}
L1-024. 后天
#include<stdio.h>
int main(){
int d;
scanf("%d",&d);
if(d<=5)printf("%d\n",(d+2));
else printf("%d\n",(d+2)%7);
return 0;
}
L1-025. 正整数A+B
#include<stdio.h>
#include<string.h>
int main(){
char str[10000];
gets(str);
int i,j,A,B;
i=0,A=0;
while(str[i]!=' '){
if(str[i]>47&&str[i]<58) //数字
A++;
else A=0;
i++;
}
if(A<i||A==0&&i==0)A=0;
else if(str[0]=='0')A=0;
else{
A=0;
for(j=0;j<i;j++)A=A*10+str[j]-48;
}
if(A>1000)A=0;
B=0;
for(j=i+1;j<strlen(str);j++){
if(str[j]<48||str[j]>57){
B=0;
break;
}
else B=B*10+str[j]-48;
}
if(str[i+1]=='0')B=0;
if(B>1000)B=0;
if(A==0)printf("?");
else printf("%d",A);
printf(" + ");
if(B==0)printf("?");
else printf("%d",B);
printf(" = ");
if(A&&B)printf("%d\n",A+B);
else printf("?\n");
return 0;
}
L1-026. I Love GPLT
#include<stdio.h>
int main(){
char str[]={"I Love GPLT"};
int i;
i=0;
while(str[i]!='\0')
{
printf("%c\n",str[i]);
i++;
}
return 0;
}
L1-027. 出租
#include<stdio.h>
int main(){
char str[12];
int i,j,arr[10]={0},index[12],num;
scanf("%s",&str);
for(i=0;i<11;i++)arr[str[i]-48]++;
printf("int[] arr = new int[]{");
num=0;
int zf[10];
for(i=9;i>=0;i--)
if(arr[i])zf[num]=i,num++;
for(i=0;i<num;i++){
printf("%d",zf[i]);
if(i<num-1)printf(",");
}
printf("};\n");
printf("int[] index = new int[]{");
for(i=0;i<11;i++){
for(j=0;j<num;j++){
if((str[i]-48)==zf[j]){
printf("%d",j);
break;
}
}
if(i<10)printf(",");
}
printf("};\n");
return 0;
}
L1-028. 判断素数
#include<stdio.h>
#include<math.h>
int main(){
int n,i,j,num[10];
scanf("%d",&n);
for(i=0;i<n;i++)scanf("%d",&num[i]);
for(i=0;i<n;i++){
if(num[i]==1)printf("No\n"); //1不是素数
else{
for(j=2;j<=sqrt(num[i]);j++){
if(num[i]%j==0){
printf("No\n");
goto next;
//break; //用break;会出错?????????????
}
}
printf("Yes\n");
next:;
}
}
return 0;
}
L1-029. 是不是太胖了
#include<stdio.h>
int main(){
int h;
scanf("%d",&h);
printf("%.1f\n",(h-100)*0.9*2);
return 0;
}
L1-030. 一帮一
#include<stdio.h>
int main()
{
struct student{
int ge;
char na[10];
};
struct student st[50];
int n,i,j;
scanf("%d",&n);
for(i=0;i<n;i++)scanf("%d %s",&st[i].ge,st[i].na);
for(i=0;i<n/2;i++)
{
for(j=n-1;j>i;j--){
if(st[i].ge!=st[j].ge&&st[j].ge!=2){
printf("%s %s\n",st[i].na,st[j].na);
st[j].ge=2;
goto next;
}
}
next:;
}
return 0;
}
L1-031. 到底是不是太胖了
#include<stdio.h>
#include<math.h>
int main()
{
int n,i,h[21][2];
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d %d",&h[i][0],&h[i][1]);
}
// for(i=0;i<n;i++){
// printf("%d %d",h[i][0],h[i][1]);
// }
for(i=0;i<n;i++)
{
double a,c;
a=(h[i][0]-100)*0.9;
c=a-(double)h[i][1]/2.0;
if(fabs(c)<a*0.1){
printf("You are wan mei!\n");}
else if(a<(double)h[i][1]/2.0){
printf("You are tai pang le!\n");}
else{
printf("You are tai shou le!\n");}
}
return 0;
}
L1-032. Left-pad
#include<stdio.h>
#include<string.h>
int main()
{
int n,i;
char c,str[1000000],sout[1000000];
scanf("%d %c",&n,&c);
getchar();
gets(str);
if(strlen(str)>n) //字符串长度大于n
{
for(i=0;i<n;i++)sout[i]=str[strlen(str)-n+i];
}
else
{
for(i=0;i<n-strlen(str);i++)sout[i]=c;
strcat(sout,str);
}
puts(sout);
return 0;
}
L1-033. 出生年
#include<stdio.h>
#include<math.h>
int judge(int a) //判断年份中不同数的个数
{
int i,j,n,num[4];
n=4;
for(i=0;i<4;i++){
if(a/pow(10,4-i-1)){
num[i]=a/pow(10,4-i-1);
a=a%(int)pow(10,4-i-1);
}
else num[i]=0;
}
for(i=0;i<4;i++){
for(j=i+1;j<4;j++){
if(num[i]==num[j]){
n--;
}
}
}
switch(n){
case -2:return 1;
case 1:return 2;
case 2:return 2;
case 3:return 3;
case 4:return 4;
}
}
int main(){
int nn,y;
scanf("%d %d",&y,&nn);
int old;
old=0;
while(judge(y)!=nn)
{
old++;
y++;
}
printf("%d %04d\n",old,y);
return 0;
}
L1-034. 点赞
#include<stdio.h>
int main(){
int N,i,bel[1000]={0};
scanf("%d",&N);
for(i=0;i<N;i++){
int a,j,b;
scanf("%d",&a);
for(j=0;j<a;j++)
{
scanf("%d",&b);
bel[b-1]++;
}
}
int max,be;
max=1;
for(i=0;i<1000;i++)
{
if(max<=bel[i])
{
max=bel[i];
be=i+1;
}
}
printf("%d %d\n",be,max);
return 0;
}
L1-035. 情人节
#include<stdio.h>
int main(){
char str[10000][11];
int i,num;
i=0;
while(1){
scanf("%s",str[i]);
if(str[i][0]=='.')break;
i++;
}
num=i;
if(num<2)printf("Momo... No one is for you ...");
else if(num<14)printf("%s is the only one for you...",str[1]);
else printf("%s and %s are inviting you to dinner...",str[1],str[13]);
return 0;
}
L1-036. A乘以B
#include<stdio.h>
int main(){
int a,b;
scanf("%d %d",&a,&b);
printf("%d\n",a*b);
return 0;
}
L1-037. A除以B
#include<stdio.h>
int main()
{
int fz,fm;
scanf("%d %d",&fz,&fm);
if(fm<0)printf("%d/(%d)=%.2f\n",fz,fm,(float)fz/fm);
else if(fm==0)printf("%d/%d=Error\n",fz,fm);
else printf("%d/%d=%.2f",fz,fm,(float)fz/fm);
return 0;
}
L1-038. 新世界
#include<stdio.h>
int main()
{
printf("Hello World\n");
printf("Hello New World\n");
return 0;
}
L1-039. 古风排版
#include<stdio.h>
int main()
{
int n,i,j,len;
char str[2000];
scanf("%d",&n);
getchar();
i=0;
while(1)
{
scanf("%c",&str[i]);
if(str[i]=='\n')break;
i++;
}
len=i; //长度
if(len%n) //有余数
{
for(i;i<(len/n+1)*n;i++)
str[i]=' ';
len=len/n;
}
else len=len/n-1;
for(i=0;i<n;i++)
{
for(j=len;j>=0;j--)
printf("%c",str[j*n+i]);
printf("\n");
}
return 0;
}
L1-040. 最佳情侣身高差
#include<stdio.h>
int main()
{
double f[10];
char c[10];
int n,i;
scanf("%d",&n);
getchar();
for(i=0;i<n;i++)
{
c[i]=getchar();
scanf("%lf",&f[i]);
getchar();
}
for(i=0;i<n;i++)
{
if(c[i]=='M')printf("%.2lf\n",f[i]/1.09);
else printf("%.2lf\n",f[i]*1.09);
}
return 0;
}
L1-041. 寻找250
#include<stdio.h>
int main()
{
int a,i;
i=0;
while(1)
{
scanf("%d",&a);
if(a==250)break;
i++;
}
printf("%d\n",i+1);
return 0;
}
L1-042. 日期格式化
#include<stdio.h>
int main()
{
int y,m,d;
scanf("%d-%d-%d",&m,&d,&y);
printf("%d-%02d-%02d\n",y,m,d);
return 0;
}
L1-043. 阅览室
#include<stdio.h>
int main()
{
struct day{
int num;
int time;
};
struct day dy[10];
int N;
scanf("%d",&N);
int d;
for(d=0;d<N;d++) //N天
{
struct book{
int id;
int tj;
int th;
};
struct book bk[1000];
dy[d].num=0,dy[d].time=0; //借阅次数0,阅读时间0
int i;
i=0; //每天借阅的xin书次数
while(1) //一天
{
char ch;
int a,t1,t2;
scanf("%d %c %d:%d",&a,&ch,&t1,&t2); //输入格式???????????、
if(a==0)goto nextday; //输入0直接进入下一天
else
{
if(ch=='S') //借
{
int j;
j=0;
for(j=0;j<i;j++) //此书是否已经借出过
{
if(bk[j].id==a) //借出过 且未记录到还
{
bk[j].tj=t1*60+t2; //重新存借阅时间
// bk[j].th=-1; //还时间为-1
goto nextstep;
}
}
if(j==i) //未借阅过
{
bk[i].id=a; //存数号
bk[i].tj=t1*60+t2; //存借阅时间
i++; //未借过
}
}//借
else //还
{
int j;
for(j=0;j<i;j++) //查找是否借阅
{
if(bk[j].id==a) //是借阅的书
{
bk[j].th=t1*60+t2; //存还书时间。
dy[d].time+=bk[j].th-bk[j].tj; //将阅读时间加到一天的阅读时间中
dy[d].num++; //借阅还书次数加一
bk[j].id=-1; //清处借书
goto nextstep;
}
}
}//借书还书还书
nextstep:;
}//一天的操作
}//一天是否结束
nextday:;
}
for(d=0;d<N;d++)
{
if(dy[d].num==0)printf("0 0\n");
else printf("%d %.0f\n",dy[d].num,(float)dy[d].time/dy[d].num);
}
return 0;
}
L1-044. 稳赢
#include<stdio.h>
#include<string.h>
int main()
{
int k,i,n;
char str[10000][10];
scanf("%d",&k);
i=0;
// getchar();
while(1)
{
scanf("%s",str[i]);
if(strcmp(str[i],"End")==0)break;
i++;
}
n=i;
// for(i=0;i<n;i++)
// {
// printf("%s\n",str[i]);
// }
for(i=0;i<n;i++)
{
if((i+1)%(k+1))
{
if(strcmp("ChuiZi",str[i])==0)
{
printf("Bu\n");
}
else if(strcmp("JianDao",str[i])==0)
{
printf("ChuiZi\n");
}
else
{
printf("JianDao\n");
}
}
else
{
printf("%s\n",str[i]);
}
}
return 0;
}
L1-045. 宇宙无敌大招呼
#include<stdio.h>
int main()
{
char str[8];
scanf("%s",str);
printf("Hello %s\n",str);
return 0;
}
L1-046. 整除光棍
#include<stdio.h>
#include<math.h>
int main()
{
int N;
scanf("%d",&N);
int i,x,n;
i=1,n=N,x=1;;
while(n/10)
{
n/=10;
x+=pow(10,i);
i++;
}
if(N==x)
{
printf("1 %d\n",i);
return 0;
}
x+=pow(10,i); //比N多一位的光棍数
while(x%N)
{
printf("%d",x/N);
x=(x%N)*10+1;
i++;
}
printf("%d %d\n",x/N,i+1);
return 0;
}
L1-047. 装睡
#include<stdio.h>
int main()
{
struct people{
char name[4];
int fx;
int mb;
};
struct people peo[100];
int N,i;
scanf("%d",&N);
for(i=0;i<N;i++)scanf("%s %d %d",peo[i].name,&peo[i].fx,&peo[i].mb);
for(i=0;i<N;i++)
{
if((peo[i].fx<15||peo[i].fx>20)||(peo[i].mb<50||peo[i].mb>70))
printf("%s\n",peo[i].name);
}
return 0;
}
L1-048. 矩阵A乘以B
#include<stdio.h>
int main()
{
int a1,b1,i,j;
int jz1[1000][1000],jz2[1000][1000];
scanf("%d %d",&a1,&b1); //读入行与列
for(i=0;i<a1;i++)
for(j=0;j<b1;j++)
scanf("%d",&jz1[i][j]);
int a2,b2;
scanf("%d %d",&a2,&b2);
if(b1!=a2)
{
printf("Error: %d != %d\n",b1,a2);
return 0;
}
printf("%d %d\n",a1,b2);
for(i=0;i<a2;i++)
for(j=0;j<b2;j++)
scanf("%d",&jz2[i][j]);
for(i=0;i<a1;i++)
{
for(j=0;j<b2;j++)
{
int m,jz;
jz=0;
for(m=0;m<b1;m++)
jz+=jz1[i][m]*jz2[m][j];
printf("%d",jz);
if(j<b2-1)printf(" ");
}
printf("\n");
}
return 0;
}
总结
这48道题,都是用的以前学的c语言基础,根本没有用到,数据结构,很多题目的情况考虑的都不大全,所以很少一次性通过。总的来说,还是比较简单的,做了这些才发现细心很重要,情况要考虑完,C语言编程能力感觉并没有提升多少,所以决定先去学一遍数据结构,再来做新的题目。
版权声明:本文为lianwaiyuwusheng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。