Callatz猜想
对一个自然数n,如果他是偶数,就砍掉一半,如果是奇数,就把(3n+1)砍一半,最后一定在某一步得到n=1
对给定的任意不超过1000的整数n,需要多少步得到n=1?
#include<stdio.h>
/*
Callatz猜想
对一个自然数n,如果他是偶数,就砍掉一半,如果是奇数,就把(3n+1)砍一半,最后一定在某一步得到n=1
对给定的任意不超过1000的整数n,需要多少步得到n=1?
*/
int main(){
int n,step = 0;
while(1){
printf("请输入一个不大于1000的数:");
scanf("%d",&n);
if(n > 1000){
printf("\n请重新输入:");
scanf("%d",&n);
}else break;
}
for(step = 0;;step++){
if(n == 1){
break;
}
if(n % 2 == 0){
n = n / 2;
}else{
n = (3 * n + 1) / 2;
}
}
printf("共进行了%d步\n",step);
return 0;
}
在第一行给出不超过10^5的正整数n,即参赛人数。随后n行,每行给出一位参赛者的信息和成绩,包括其所在学校的编号及其比赛成绩(百分制)
在一行中给出总得分最高的学校的编号及其总分,中间以空格分隔
#include<stdio.h>
/*
在第一行给出不超过10^5的正整数n,即参赛人数。随后n行,每行给出一位参赛者的信息和成绩,包括其所在学校的编号及其比赛成绩(百分制)
在一行中给出总得分最高的学校的编号及其总分,中间以空格分隔
*/
int school[100010] = {0}; //用来记录各个学校的总分
struct stuInfo{
int num;
int score;
}stu[100000];
int main(){
int n;
printf("请输入一个不大于100000的数字:");
scanf("%d",&n);
while(1){
if(n > 100000){
printf("请重新输入:");
scanf("%d",&n);
}else break;
}
for(int i = 1;i<=n;i++){
printf("请依次输入学校代号、成绩:");
scanf("%d %d",&stu[i].num,&stu[i].score);
school[stu[i].num] += stu[i].score;
}
int max = school[1];
int flag = 1;
for(int i = 1;i<= n;i++){
if(school[i] > max){
max = school[i];
flag = i;
}
}
printf("%d %d\n",flag,max);
return 0;
}
输入一个数n(1<=n<=200),然后输入n个不同数值的数,再输入一个x,输出这个数在数组中的下标
#include<stdio.h>
/*
输入一个数n(1<=n<=200),然后输入n个不同数值的数,再输入一个x,输出这个数在数组中的下标
*/
int main(){
int n;
scanf("%d",&n);
while (1)
{
/* code */
if(n<1 || n>200){
printf("重新输入:");
scanf("%d",&n);
}else break;
}
int array[n];
printf("请输入数字:");
scanf("%d",&array[0]);
for(int i = 1;i<n;i++){
printf("请输入数字:");
scanf("%d",&array[i]);
for(int j = 0;j<i;j++){ //
bool flag = true;
while(flag){
if(array[i] == array[j]){ //如果相同
printf("重复,请重新输入:");
scanf("%d",&array[i]);
}else flag = false;
}
}
}
printf("当前数组:");
for(int i = 0;i<n;i++){
printf("%d ",array[i]);
}
printf("\n");
int key;
printf("请输入要查询的数字:");
scanf("%d",&key);
for(int i = 0;i<n;i++){
if(key == array[i]){
printf("该数位于%d\n",i);
break;
}
if(i == n-1 && key != array[i]){
printf("-1\n");
}
}
return 0;
}