今天犯了致命的错误:c语言中没有引用,害我错误找了半天,果然基础还是不行
int main()
{
int a=0,b,c;
int &s=a;
return 0;
}
编译出错 error C2143: 语法错误 : 缺少“;”(在“&”的前面)
问题一:
问题描述:
Bob和Alice有个约会,一大早Bob就从点(0,0)出发,前往约会地点(a,b)。Bob没有一点方向感,因此他每次都随机的向上下左右四个方向走一步。简而言之,如果Bob当前在(x,y),那么下一步他有可能到达(x+1,y), (x-1,y), (x,y+1), (x,y-1)。很显然,当他到达目的地的时候,已经很晚了,Alice早已离去。第二天,Alice质问Bob为什么放她鸽子,Bob说他昨天花了s步到达了约会地点。Alice怀疑Bob是不是说谎了。你能否帮她验证一下?
代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b,s;
//printf("请输入三个整数a,b,s:");
scanf("%d %d %d",&a,&b,&s);
a=a>0?a:(-a);
b=b>0?b:(-b);
if(s-a-b<0) printf("No");
else if((s-a-b)%2==0) printf("Yes");
else printf("No");
return 0;
}
问题二
问题描述:原来,面试官的手机被他调皮的儿子小明用一个数字作为密码锁上了。
小明只记得这个数字的十进制范围是l~r,且这个数的二进制表示中恰有m个1,却不记得确切的数字了。
面试官可急坏了。这才有了小赛一个将功赎过的机会。
他想要让小赛算出,他最坏情况下,要试多少次密码才能确保打开手机呢?
请输出这个次数。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b,m,i,c,co,count=0;
scanf("%d %d %d",&a,&b,&m);
for (i=a;i<=b;i++)
{
c=i;
co=0;
while (c)
{
c=c&(c-1);
co++;
}
if(co==m) count++;
}
if(count>0) printf("%d",count);
else printf("-1");
// system("pause");
return 0;
}
问题三
问题描述:有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法?
注:规定从一级到一级有0种走法。
#include <stdio.h>
/*上台阶*/
int fun(int a)
{
if(a<1) return -1;
if(a==1) return 0;
else if(a==2) return 1;
else if(a==3) return 2;
else return (fun(a-1)+fun(a-2));
}
int main()
{
int n,i,A[100],num;
scanf("%d",&n);
for (i=0;i<n;i++)
{
scanf("%d",&A[i]);
}
for (i=0;i<n;i++)
{
num=fun(A[i]);
printf("%d\n",num);
}
system("pause");
}
问题四
问题描述:说起约德尔人的未来,黑默丁格曾经提出了一个约德尔测试,将约德尔人的历史的每个阶段都用一个字符表达出来。(包括可写字符,不包括空格。)。然后将这个字符串转化为一个01串。转化规则是如果这个字符如果是字母或者数字,这个字符变为1,其它变为0。然后将这个01串和黑默丁格观测星空得到的01串做比较,得到一个相似率。相似率越高,则约德尔的未来越光明。
请问:相似率为多少?
#include <string.h>
#include <stdio.h>
#define NUM(x) (x>='0'&&x<='9')
#define ACS(x) ((x>='a'&&x<='z') ||(x>='A'&&x<='Z'))
int main()
{
int i=0;
char str1[1000],str2[1000];
char *p,*q;
gets(str1);
gets(str2);
p=str1;
q=str2;
while (*p!='\0'&&*q!='\0')
{
if (*q=='1'&&(NUM(*p)||ACS(*p)) )
{
i++;
}
else if(*q=='0'&&(!NUM(*p)&&!ACS(*p)) )
{
i++;
}
p++;q++;
}
printf("%4.2f%",((float)i*100/(strlen(str1))));
system("pause");
return 0;
}
问题五:
问题描述:一个公交车经过n个站点,乘客从前门上车,从后门下车。
现在统计了在第i个站,下车人数a[i],以及上车人数b[i]。
问公交车运行时候车上最多有多少乘客
#include <stdio.h>
int main()
{
int i,n,a[100],b[100],max=0,sum=0;
scanf("%d",&n);
for (i=0;i<n;i++)
{
scanf("%d %d",&a[i],&b[i]);
sum+=(b[i]-a[i]);
max=max<sum?sum:max;
}
printf("%d",max);
system("pause");
return 0;
}
问题六
问题描述:考研有4门科目,分别是政治(满分100分),英语(满分100分),数学(满分150分)和专业课(满分150分)。
某校计算机专业今年录取研究生的要求是:政治、英语每门课成绩不低于60分,数学和专业课不低于90分,总成绩不低于310分。并且规定:在满足单科以及总成绩最低要求的基础上,350分以上(含350分)为公费(Gongfei),310分~349分为自费(Zifei)。
请编程判断考生的录取情况。
#include <stdio.h>
int main()
{
int i,n,A[1000][4],sum;//数组太小也有错
scanf("%d",&n);
for (i=0;i<n;i++)
{
scanf("%d %d %d %d",&A[i][0],&A[i][1],&A[i][2],&A[i][3]);
}
for(i=0;i<n;i++)
{
sum=A[i][0]+A[i][1]+A[i][2]+A[i][3];
if (A[i][0]>=60&&A[i][1]>=60&&A[i][2]>=90&&A[i][3]>=90&&sum>=310)
{
// if(sum<310) printf("Fail\n");
if(sum>=350) printf("Gongfei\n");
else printf("Zifei\n");
}
else
{
printf("Fail\n");
}
}
// system("pause");
return 0;
}
问题七 下起楼来我最快
问题描述:小赛的家在楼层n,当前电梯停在的楼层m,
以及电梯每经过一层楼的时间t1,开门时间t2,关门时间t3,还有小赛每下一层楼的时间t4,
让你帮小赛计算一下,他最快到达第1层的时间。
#include <stdio.h>
#include <math.h>
int main()
{
long m,n;
long t1,t2,t3,t4,sumt,sumx;
scanf("%ld%ld",&n,&m);
scanf("%ld%ld%ld%ld",&t1,&t2,&t3,&t4);
sumt=(n-1)*t4;
sumx=abs(n-m)*t1+t2+t3+t1*(n-1)+t2;
sumt=(sumt<sumx)?sumt:sumx;
printf("%ld",sumt);
return 0;
}
问题七认老乡
问题描述:大学的同学来自全国各地,对于远离家乡步入陌生大学校园的大一新生来说,碰到老乡是多么激动的一件事,于是大家都热衷于问身边的同学是否与自己同乡,来自新疆的小赛尤其热衷。但是大家都不告诉小赛他们来自哪里,只是说与谁同乡,从所给的信息中,你能告诉小赛有多少人确定是她的同乡吗?
输入:每个测试实例首先包括2个整数,N(1 <= N <= 1000),M(0 <= M <= N*(N-1)/2),代表现有N个人(用1~N编号)和M组关系;
在接下来的M行里,每行包括2个整数,a,b,代表a跟b是同乡;
当N = 0,M = 0输入结束;
已知1表示小赛本人。
#include<stdio.h>
int root[1001];
int findroot(int x){
if(root[x]==x)
return x;
else {
int c=findroot(root[x]);
root[x]=c;
return c;
}
}
int main(){
int n,m;
while(scanf("%d %d",&n,&m)&&(n!=0||m!=0)){
for(int i=1;i<=n;i++){
root[i]=i;
}
for(int i=0;i<m;i++){
int a,b;
scanf("%d %d",&a,&b);
int x=findroot(a);
int y=findroot(b);
if(x!=y){
root[y]=x;
}
}
int countx=0;
for(int i=2;i<=n;i++){
if(findroot(i)==findroot(1))
countx++;
}
printf("%d\n",countx);
}
return 0;
}
/这个看不懂什么意思,还是水平不够,虽然结果是对的/
虽然多多少少理解了,但是如果纯自己写就不会了