几道C语言编程问题

2025-03-11 13:41:34
推荐回答(4个)
回答1:

全部用DEV-C++和VC++通过

//1.找出一个二维数组中鞍点,即该位置上的元素在该行上最大,在该列上最小
#include
#define R 3 //3行
#define C 4 //4列
using namespace std;

int main(int argc,char* argv[])
{
int a[R][C]={{2,6,11,1},
{1,8,9,7},
{5,7,10,2}};
int Sp=0,rM=0,cM;
bool hasSp=true;
for(int i=0;i {
Sp=0;
hasSp=true;
for(int j=0;j if(a[i][j]>Sp)
{
Sp=a[i][j];
rM=j;
cM=i;
}
for(int i=0;i if(a[i][rM] if(hasSp) break;
}

if(!hasSp) cout <<"没有鞍点" < else cout <<"鞍点" <<"a[" < return 0;
}

//2.从键盘任意输入5个学生的姓名,编程找出并输出按字典顺序排在最前面的学生姓名
#include
#include
using namespace std;
#define M 5 //M个学生
string sort(string* name);
int main()
{
string stuname[M];
for(int i=0;i cin >>stuname[i];
cout < return 0;
}

string sort(string* name)
{
string minname;
minname=name[0]; //最小姓名暂定为第一个学生的姓名
for(int i=0;i {
int len=name[i].length(); //第i个学生的姓名长度
for(int j=0;j<=len;j++) //当前学生姓名字符循环
{
if(name[i][j] { //则最小姓名等于第i个学生
minname=name[i];
break;
}
}

}
return minname;
}

//3.计算机随机生成一个各位相异的四位数,由人来猜,每次提示:xAxB

#include
#include
#define N 7 //最多可以猜N次
#define I 10 //生成I内的数
#define M 4 //生成M个不重复的随机数
using namespace std;

int main(int argc,char*argv[])
{
int n[3];
int l[3];
int r[I];
int j=0,iR=0;
bool c=false;
srand((unsigned)time(NULL));
for(int i=0;i r[i]=i;

for(int i=0;i {
iR=(int)((I-i-1)*rand()/(RAND_MAX+1.0));
n[i]=r[iR];
r[iR]=r[I-i-1];
cout < }

cout < while(j<=N && !c)
{
int a=0,b=0;
for(int i=0;i>l[i];
for(int i=0;i {
for(int k=0;k<3 && !c;k++)
{
if(l[i]==n[k] && i!=k) b++;
if(l[i]==n[k] && i==k) a++;
if(a==M) c=true;
}
}
cout < }
if(c) cout <<"Good!" < else cout <<"no chance!" < system("pause");
return 0;
}

回答2:

全部用DEV-C++和VC++通过

//1.找出一个二维数组中鞍点,即该位置上的元素在该行上最大,在该列上最小
#include
#define R 3 //3行
#define C 4 //4列
using namespace std;

int main(int argc,char* argv[])
{
int a[R][C]={{2,6,11,1},
{1,8,9,7},
{5,7,10,2}};
int Sp=0,rM=0,cM;
bool hasSp=true;
for(int i=0;i {
Sp=0;
hasSp=true;
for(int j=0;j if(a[i][j]>Sp)
{
Sp=a[i][j];
rM=j;
cM=i;
}
for(int i=0;i if(a[i][rM] if(hasSp) break;
}

if(!hasSp) cout <<"没有鞍点" < else cout <<"鞍点" <<"a[" < return 0;
}

//2.从键盘任意输入5个学生的姓名,编程找出并输出按字典顺序排在最前面的学生姓名
#include
#include
using namespace std;
#define M 5 //M个学生
string sort(string* name);
int main()
{
string stuname[M];
for(int i=0;i cin >>stuname[i];
cout < return 0;
}

string sort(string* name)
{
string minname;
minname=name[0]; //最小姓名暂定为第一个学生的姓名
for(int i=0;i {
int len=name[i].length(); //第i个学生的姓名长度
for(int j=0;j<=len;j++) //当前学生姓名字符循环
{
if(name[i][j] { //则最小姓名等于第i个学生
minname=name[i];
break;
}
}

}
return minname;
}

//3.计算机随机生成一个各位相异的四位数,由人来猜,每次提示:xAxB

#include
#include
#define N 7 //最多可以猜N次
#define I 10 //生成I内的数
#define M 4 //生成M个不重复的随机数
using namespace std;

int main(int argc,char*argv[])
{
int n[3];
int l[3];
int r[I];
int j=0,iR=0;
bool c=false;
srand((unsigned)time(NULL));
for(int i=0;i r[i]=i;

for(int i=0;i {
iR=(int)((I-i-1)*rand()/(RAND_MAX+1.0));
n[i]=r[iR];
r[iR]=r[I-i-1];
cout < }

cout < while(j<=N && !c)
{
int a=0,b=0;
for(int i=0;i>l[i];
for(int i=0;i {
for(int k=0;k<3 && !c;k++)
{
if(l[i]==n[k] && i!=k) b++;
if(l[i]==n[k] && i==k) a++;
if(a==M) c=true;
}
}
cout <
}
if(c) cout <<"Good!" < else cout <<"no chance!" < system("pause");
return 0;

回答3:

//鞍点
#include
#include
#define H 3
#define S 4
int main()
{
int a[H][S];
int i,j;
int tpi,tpj;
int bo;
for(i=0;i for(j=0;j scanf("%d",&a[i][j]);
for(i=0;i {
for(j=0;j printf("%d\t",a[i][j]);
printf("\n");
}
for(i=0;i {
for(j=0;j {
bo=1;
for(tpj=0;bo!=0&&tpj if(a[i][j]<=a[i][tpj])
bo=0;
for(tpi=0;bo!=0&&tpi if(a[i][j]=>a[tpi][j])
bo=0;
if(bo!=0)
{
printf("鞍点为:a[%d][%d]=%d\n",i,j,a[i][j]);
return(0);
}
}
}
printf("无鞍点\n");
return(1);
}

//姓名排序
#include
#include
int main()
{
char tp[20],name[5][20];
int i;
for(i=0;i<5;i++)
gets(name[i]);
strcpy(tp,name[i]);
for(i=0;i<5;i++)
if(strcmp(tp,name[i])>0)
strcpy(tp,name[i]);
puts(tp);
return(1);
}

//猜字游戏
#include
#include
#include
int main()
{
int num[4];
int n=0,i,j,x=0,y=0;
int guess[4];

srand(time(NULL));
for(i=0;i<4;i++)
{
num[i]=rand()%10;
for(j=0;j {
if(num[i]==num[j])
{
i--;
break;
}
}
}
printf("开始!\n");
for(;x!=4;)
{
x=0;y=0;
scanf("%d",&n);
guess[0]=n/1000;
guess[1]=n/100%10;
guess[2]=n/10%10;
guess[3]=n%10;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{
if(guess[j]==num[i]&&i==j)x++;
if(guess[j]==num[i]&&i!=j)y++;
}
printf("%dA\t%dB\n",x,y);
}
printf("成功!正确答案:\n%d%d%d%d\n",num[0],num[1],num[2],num[3]);
return(1);
}

回答4:

//猜数游戏
#include
#include
#include
main()
{
int stime,a,j,t,i,c,m,g,s,z,k,l[4];
long ltime;
ltime=time(NULL);
stime=(unsigned int)ltime/2;
srand(stime);
z=rand(9999);
printf("I have a numbers with 4 digits in mind.please guess.\n");
for(c=1;;c++)
{
printf("Enter:");
scanf("%d",&g);
a=z;j=0;k=0;l[0]=l[1]=l[2]=l[3]=0;
for(i=1;i<5;i++)
{
s=g;m=1;
for(t=1;t<5;t++)
{if(a%10==s%10)
{
if(m&&t!=l[0]&&t!=l[1]&&t!=l[2]&&t!=l[3])
{
j++;m=0;l[j-1]=t;
}
if(i==t) k++;
}
s/=10;
}
a/=10;
}
printf("%dA%dB\n",k,j);
if(k==4) break;
}
printf("Now u have correctly guessed the whole numbers after %d times.\n",c);
}

//二维数组鞍点
#include
#define m 3
#define n 3
int main() {
int a[m][n],i,j,max,min,flag=0,i1;
printf("请输入二维数组a[%d][%d]:\n",m,n);
for (i=0;i for (j=0;j scanf("%d",&a[i][j]);
printf("二维数组a[%d][%d]如下:\n",m,n);
for (i=0;i for (j=0;j printf("%4d",a[i][j]);
printf("\n");
}

for (i=0;i i1=i;
for (max=a[i][0],j=0;j if (max max=a[i][j];
for (j=0;j for (min=a[i][j],i=0;i if (min>a[i][j])
min=a[i][j];
i=i1;
if (a[i][j]==max&&a[i][j]==min) {
printf("a[%d][%d]=%d ",i,j,a[i][j]);
flag++;
}
}

}
if (flag==0)
printf("没有鞍点!\n");
else printf("\n");
}
//5个学生
#include
#include
main()
{
char a[5][20];
int i,k;
printf("Input 5 names:\n");
for(i=0;i<5;i++)
gets(a[i]);
for(i=1,k=0;i<5;i++)
if(strcmp(a[k],a[i])>0)
k=i;
puts(a[k]);
}