大家好,欢迎来到IT知识分享网。
算术运算
- 2393 取余
#include <stdio.h>
main() {
int x,y;
scanf("%d%d",&x,&y);
printf("%d",x%y);
}
- 2394 四则运算1
#include <stdio.h>
int main() {
int n;
scanf("%d",&n);
int sum = 0;
for(int i=0;i<n;++i){
int m;
scanf("%d",&m);
if(m<0) continue;
sum += m;
}
printf("%d",sum);
return 0;
}
- 2395 函数1
#include <stdio.h>
int main(){
// x^2+2*x+5
int x;
scanf("%d",&x);
printf("%d\n",x*x+2*x+5);
return 0;
}
- 2396 圆的面积
#include <stdio.h>
int main(){
float r;
scanf("%f",&r);
printf("%f",3.14159*r*r);
}
比较运算
- 2397 直角三角形
#include <stdio.h>
int main(){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("%d",a*a+b*b==c*c);
}
变量
- 2398 数字交换
#include <stdio.h>
int main(){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
int temp = a;
a = b;
b = c;
c = temp;
printf("%d %d %d",a,b,c);
}
if
- 2104 奇偶性 注意正负值
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
printf("%d",abs(n%2));
return 0;
}
- 2399 输出条件1
#include <stdio.h>
int main(){
int a,b;
scanf("%d%d",&a,&b);
printf("%d\n",a+b>10?a*b:a-b);
}
- 2400 输出条件2
#include <stdio.h>
int main(){
int a,b;
scanf("%d%d",&a,&b);
if(a+b<0){
printf("negative");
}else if(a+b>=4){
printf("NO");
}else{
printf("YES");
}
}
- 2402 输出条件3
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
int count=0;
while(n%2){
++count;
n/=2;
}
printf("%的、n",n);
return 0;
}
- 2410 分数评级
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
int res = 0;
for(int i=0;i<4;++i){
res = res*10 + n%10;
n /=10;
}
printf("%d",res);
return 0;
}
- 2050 年龄判断
int main() {
int n;
scanf("%d",&n);
if(0<=n && n<=3){
printf("infant");
}else if(4<=n && n<=12){
printf("child");
}else if(13<=n && n<=18){
printf("youngster");
}else if(19<=n && n<=25){
printf("youth");
}
return 0;
}
switch
- 2401 首字母
#include <stdio.h>
int main(){
char c;
scanf("%c",&c);
switch(c){
case 'a':
printf("apple");
break;
case 'b':
printf("banana");
break;
case 'c':
printf("cat");
break;
default:
printf("no");
}
}
- 2403 求和
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int a,b;
scanf("%d%d",&a,&b);
switch(a+b){
case 1:printf("one\n");break;
case 2:printf("two\n");break;
case 3:printf("three\n");break;
case 4:printf("four\n");break;
case 5:printf("five\n");break;
case 6:printf("six\n");break;
case 7:printf("seven\n");break;
case 8:printf("eight\n");break;
case 9:printf("nine\n");break;
default:printf("None\n");
}
return 0;
}
- 2105 年月天数
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n,m;
scanf("%d%d",&n,&m);
int days[12]={
31,28,31,30,31,30,31,31,30,31,30,31};
printf("%d",m==2&&n%4==0&&n%100!=0||n%400==0?29:days[m-1]);
return 0;
}
while
- 2404 2的幂整除
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
int count = 0;
while(n%2 == 0){
n/=2;
++count;
}
printf("%d\n",count);
return 0;
}
while/for
- 2086 循环输出
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
for(int i=1;i<=n;++i){
printf("%d\n",i);
}
return 0;
}
- 2087 循环判断输出
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
for(int i=3;i<=n;++i)
if(i%3 == 0)
printf("%d\n",i);
return 0;
}
- 2090 幸运数字
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
int has = 0;
while(0 != n){
if(n%10 == 7){
has = 1;
break;
}
n /= 10;
}
printf(has?"Yes":"No");
return 0;
}
- 2056 素数判断
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
int primer = 1;
for(int i=2;i<n;++i){
if(n%i == 0){
primer = 0;
break;
}
}
printf(primer?"Yes":"No");
return 0;
}
- 2057 输出最小值
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
int min;
scanf("%d",&min);
while(--n){
int m;
scanf("%d",&m);
min = min>m?m:min;
}
printf("%d",min);
return 0;
}
- 2093 求最值
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
int max,min;
scanf("%d",&max);
min = max;
while(--n){
int m;
scanf("%d",&m);
if(max < m) max = m;
if(min > m) min = m;
}
printf("%d %d",min,max);
return 0;
}
- 2094 前缀和
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
printf("%d\n",n);
int res = 0;
while(n--){
int temp;
scanf("%d",&temp);
res += temp;
printf("%d\n",res);
}
return 0;
}
- 2059 上台阶
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
int a = 1;
int b = 1;
for(int i=3;i<=n;++i){
int tmp = a+b;
a = b;
b = tmp;
}
printf("%d",b);
return 0;
}
- 2111 倒序输出
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int a,b;
scanf("%d%d",&a,&b);
for(int i=b;i>=a;--i){
printf("%d\n",i);
}
return 0;
}
- 2110 求和
#include <stdio.h>
int main() {
int n;
scanf("%d",&n);
int res = 0;
while(n--){
int m;
scanf("%d",&m);
res += m;
}
printf("%d",res);
return 0;
}
- 2137 数列计算
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
int a = 4;
int b = 7;
float sum = 4.0/7.0;
for(int i=1;i<n;++i){
int temp = a+b;
a=b;
b=temp;
sum += 1.0*a/b;
}
printf("%d/%d\n %.2f",a,b,sum);
return 0;
}
- 2405 阶乘
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
int res = 1;
for(int i=1;i<=n;++i){
res *= i;
}
printf("%d\n",res);
return 0;
}
- 2406 非负数和
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
int res=0;
for(int i=0;i<n;++i){
int m;
scanf("%d",&m);
if(m<0) break;
res += m;
}
printf("%d",res);
return 0;
}
- 2407 分数求和
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
float ans = 0;
for(int i=1;i<=n;++i){
ans += 1.0/i;
}
printf("%f",ans);
return 0;
}
- 2408 质数判断
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
int prime=1;
for(int i=2;i<n;++i){
if(n%i == 0){
prime = 0;
break;
}
}
printf(prime?"yes":"no");
return 0;
}
- 2409 倍数个数
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
int cnt = 0;
for(int i=1;i<=n;++i){
if(i%2==0 || i%3==0 || i%5==0){
++cnt;
}
}
printf("%d",cnt);
return 0;
}
- 2411 数字反写
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
int res = 0;
for(int i=0;i<4;++i){
res = res*10 + n%10;
n /=10;
}
printf("%d",res);
return 0;
}
- 2415 分数求和2
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
float res = 0;
for(int i=1;i<=n;++i){
res+= 1.0/(i%2?i:-i);
}
printf("%f",res);
return 0;
}
- 2417 分数求和3 注意精确到小数点后10位
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
double res=0;
int fact = 1;
for(int i=1;i<=n;++i){
fact *= i;
res += 1.0/fact;
}
printf("%.10f\n",res);
return 0;
}
- 2416 9的个数
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
int res = 0;
for(int i=1;i<=n;++i){
if(i%10==9) ++res;
if(i/10==9) ++res;
}
printf("%d",res);
return 0;
}
- 2418 最大的质数
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
n--;
while(1){
int prime = 1;
for(int i=2;i<n;++i){
if(n%i==0){
prime = 0;
n--;
break;
}
}
if(prime){
break;
}
}
printf("%d",n);
return 0;
}
- 2419 回文数
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
int temp = 0;
int m = n;
while(0 != m){
temp = temp*10 + m%10;
m /= 10;
}
printf(n==temp?"yes":"no");
return 0;
}
- 2420 正数的和
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
int sum = 0;
for(int i=0;i<n;++i){
int m;
scanf("%d",&m);
if(m<0) continue;
sum += m;
}
printf("%d",sum);
return 0;
}
双重循环
- 2412 九九乘法表
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
for(int i=1;i<=n;++i){
for(int j=1;j<=i;++j){
printf("%d*%d=%d ",j,i,j*i);
}
printf("\n");
}
return 0;
}
- 2089 打印九九乘法表
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j){
printf("%d*%d=%d",i,j,i*j);
if(j != n) printf("\t");
}
printf("\n");
}
return 0;
}
- 2413 图形输出1
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
for(int i=0;i<n;++i){
for(int j=0;j<=i;++j){
printf("*");
}
printf("\n");
}
return 0;
}
- 2414 图形输出2
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
for(int i=0;i<n;++i){
for(int j=0;j<i*2+1;++j){
printf("*");
}
printf("\n");
}
return 0;
}
- 2088 打印星塔
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
for(int i=1;i<=n;++i){
for(int j=0;j<n-i;++j) printf(" ");
for(int j=0;j<2*i-1;++j) printf("*");
printf("\n");
}
return 0;
}
- 2091 幸运数们
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int L,R;
scanf("%d%d",&L,&R);
int none = 1;
for(int i=L;i<=R;++i){
int temp = i;
while(0 != temp){
if(temp%10 == 7){
none = 0;
printf("%d\n",i);
break;
}
temp /= 10;
}
}
if(1 == none){
printf("None");
}
return 0;
}
- 2122 分解质因数
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
for(int i=2;i<=n;++i){
while(n%i == 0){
printf("%d\n",i);
n /= i;
}
}
return 0;
}
- 2145 打印月份
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int y,m,n;
scanf("%d%d%d",&y,&m,&n);
int days[] = {
31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
if(y%4==0&&y%100!=0||y%400==0){
days[1] = 29;
}
int dist = 0;
for(int i=0;i<m-1;++i){
dist += days[i];
}
int day = (dist+n)%7;
printf("S M T W T F S\n",n);
for(int i=0;i<day;++i){
printf(" ");
}
for(int i=1;i<=days[m-1];++i){
printf("%d",i);
printf((day+i)%7 == 0?"\n":i>9?" ":" ");
}
return 0;
}
数字处理
- 2135 价钱统计 浮点数误差处理
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
// 西瓜、桃子、葡萄、苹果
float watermelon,peach,grape,apple;
scanf("%f%f%f%f",&watermelon,&peach,&grape,&apple);
float price_watermelon = watermelon*1.2;
float price_peach = peach*3.5;
float price_grape = grape*4.5;
float price_apple = apple*5.0;
printf("%.1f\n",price_watermelon+0.01);
printf("%.1f\n",price_peach+0.01);
printf("%.1f\n",price_grape+0.01);
printf("%.1f\n",price_apple+0.01);
printf("%.1f\n",price_watermelon+price_peach+price_grape+price_apple+0.01);
return 0;
}
- 2118 完全平方数 浮点数转整数或者循环处理
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
int a = sqrt(n);
a*a == n?printf("%d",a):printf("No");
return 0;
}
- 2101 越界了吗 整数溢出
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int x,y;
scanf("%d%d",&x,&y);
int sum=x+y;
printf(
(x < 0 && y < 0 && sum >= 0)
||(x > 0 && y > 0 && sum <= 0)
?"Yes":"No");
return 0;
}
- 2119 吃龙虾 注意整数溢出
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n,m;
scanf("%d%d",&n,&m);
long long res = 0;
while(n--){
int ai;
scanf("%d",&ai);
if(ai>=m){
res+=ai;
}
}
printf("%lld",res);
return 0;
}
进制
- 2102 或减与 注意操作符优先级
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int a,b;
scanf("%d%d",&a,&b);
printf("%d",(a|b)-(a&b));
return 0;
}
- 2112 转二进制 使用短除法
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
while(0!=n){
printf("%d",n%2);
n >>= 1;
}
return 0;
}
- 1922 乘法
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int toDec(int n,int base){
int res = 0;
int c = 0;
while(n){
int t = n%10;
if(t >= base) return -1;
res += t*pow(base,c);
n /= 10;
++c;
}
return res;
}
int main() {
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
int res = 0;
for(int i=2;i<=16;++i){
int n = toDec(a,i);
int m = toDec(b,i);
int p = toDec(c,i);
if(n*m==p){
res = i;
break;
}
}
printf("%d",res);
return 0;
}
- 2121 转二进制2 短除法(注意整数溢出)或者使用函数itoa
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
int pos = 0;
char res[40];
while(0!=n){
res[pos++] = '0'+n%2;
n /= 2;
}
for(int i=pos-1;i>=0;--i){
printf("%c",res[i]);
}
return 0;
}
- 2130 进制转换 ASCII编码\进制转换\数字转字符串或者使用函数itoa
#include <stdio.h>
int main(){
int n,b;
scanf("%d%d",&n,&b);
char table[17] = "0123456789ABCDEF";
char s[32] = {
0};
int i = 0;
do{
int t = n%b;
//printf("%c",table[t]);
s[i] = table[t];
++i;
n /= b;
}while(n != 0);
// 逆序打印
int j;
for(j=0;j<i/2;++j){
char t = s[j];
s[j] = s[i-1-j];
s[i-1-j] = t;
}
printf("%s\n",s);
}
多重循环
- 1956 费马大定理扩展
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
int flag = 1;
for(int o=2;o<=n;++o)
for(int r=2;r<o;++r)
for(int s=r+1;s<o;++s)
for(int t=s+1;t<o;++t)
if(pow(r,3)+pow(s,3)+pow(t,3) == pow(o,3)){
printf("(%d,%d,%d,%d)\n",o,r,s,t);
flag = 0;
}
if(flag) printf("OMG\n");
return 0;
}
数组
- 2092 翻转数组
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
int arr[n];
int size = n;
while(--n >= 0){
scanf("%d",&arr[n]);
}
printf("%d\n",size);
for(int i=0;i<size;++i){
printf("%d\n",arr[i]);
}
return 0;
}
- 1911 收金币 遍历求和
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
int arr[n];
int sum = 0;
for(int i=0;i<n;++i){
scanf("%d",&arr[i]);
sum += arr[i];
}
if(sum%2==1){
printf("No");
return 0;
}
int pre = 0;
for(int i=0;i<n;++i){
pre += arr[i];
if(pre == sum/2){
printf("Yes");
return 0;
}
if(pre > sum/2){
printf("No");
return 0;
}
}
return 0;
}
- 1955 过欠判断
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
int arr[n];
for(int i=0;i<n;++i){
scanf("%d",&arr[i]);
}
for(int i=0;i<n;++i){
if(1 == arr[i]){
printf("Q\n");
continue;
}
int sum = 1;
for(int j=2;j<arr[i];++j){
if(arr[i]%j == 0)
sum += j;
}
if(sum == arr[i]) printf("E\n");
else if(sum > arr[i]) printf("G\n");
else printf("Q\n");
}
return 0;
}
- 1959 好事成双
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int arr[1000];
int len=0;
while(1){
scanf("%d",&arr[len++]);
if(0 == arr[len-1]) break;
}
int c=0;
for(int i=0;i<len-1;++i){
for(int j=i;j<len;++j){
if(arr[i] == 2*arr[j]
|| 2*arr[i] == arr[j])
++c;
}
}
printf("%d",c);
return 0;
}
数组:记录用法
- 1912 咖啡馆 遍历字符串+ASCI数组记录
#include <stdio.h>
#include <stdbool.h> // bool true false
int main(){
int n;
scanf("%d",&n);
char s[100];
scanf("%s",s);
// 定义座位
int seat_nums = n;// 当前有多少位置空着
// 定义记录表
int record[26] = {
0};
int count = 0;// 未接收到服务的人数
for(int i=0;'\0'!=s[i];++i){
char c = s[i];
int no = c-'A';// 字符对应的记录表的下标
// 出
if(record[no] == 1){
record[no] = 0;
++seat_nums;
continue;
}else{
// 入
if(seat_nums == 0){
// 没有座位
++count;
++i;
}else{
--seat_nums;
record[no] = 1;
}
}
}
printf("%d\n",count);
}
- 1915 西湖游船 数组记录
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n,m,W;
scanf("%d%d%d",&n,&m,&W);
int weights[n+1];
for(int i=1;i<=n;++i){
scanf("%d",&weights[i]);
}
int records[n+1];
memset(records,0,(n+1)*sizeof(int));
int total = 0;
int max = 0;
for(int i=0;i<m;++i){
int index;
scanf("%d",&index);
if(records[index] == 0){
records[index] = 1;
total +=weights[index];
max = max < total?total:max;
if(max > W){
printf("Oh, My God!");
return 0;
}
}else{
records[index] = 0;
total -=weights[index];
}
}
printf("%d",max);
return 0;
}
- 2113 丢失的数字
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n,m;
scanf("%d%d",&n,&m);
int arr[n+1];
memset(arr,0,(n+1)*sizeof(int));
while(m--){
int t;
scanf("%d",&t);
arr[t]++;
}
for(int i=1;i<=n;++i){
if(arr[i] == 0) printf("%d\n",i);
}
return 0;
}
- 2114 多出的数字
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n,m;
scanf("%d%d",&n,&m);
int arr[n+1];
memset(arr,0,(n+1)*sizeof(int));
while(m--){
int t;
scanf("%d",&t);
arr[t]++;
}
for(int i=1;i<=n;++i){
if(arr[i] > 1)
printf("%d %d\n",i,arr[i]);
}
return 0;
}
字符串
- 2150 字符替换
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
char str[10001];
scanf("%s",str);
for (int i=0;'\0' !=str[i];++i) {
if(str[i]>='0' && str[i]<='9'){
str[i]='*';
}
}
printf("%s",str);
return 0;
}
- 2153 字典序
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
char a[10000],b[10000];
scanf("%s%s",a,b);
printf(strcmp(a,b)<0?"YES":"NO");
return 0;
}
- 2148 字符出现位置
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
char str[10001];
scanf("%s\n",str);
char c;
scanf("%c",&c);
int pos = -1;
for(int i=0;'\0' != str[i];++i){
if(c == str[i]){
pos = i;
break;
}
}
printf("%d",pos);
return 0;
}
- 2149 字符出现位置
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
char a[10001],b[10001];
scanf("%s\n%s",a,b);
char* p = strstr(a,b);
printf("%d",NULL == p?-1:p-a);
return 0;
}
- 1950 数据的存储
gets()
与scanf()
#include <stdio.h>
int main(){
char s[2048] = {
'\0'};
char t[2048] = {
'\0'};
// scanf("%s",s);
gets(s);
int count = 0;
for(int i=0,j=0;'\0'!=s[i];++i,++j){
if('"' == s[i]){
++count;
if(count%2==1){
// ``
t[j] = '`';
++j;
t[j] = '`';
}else{
// ''
t[j] = '\'';
++j;
t[j] = '\'';
}
}else{
t[j] = s[i];
}
}
printf("%s\n",t);
}
多维数组/结构体
- 1887 颜色精简 注意处理Z大于180的情况。
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
int table[n][3];
for(int i=0;i<n;++i){
scanf("%d%d%d"
,&(table[i][0]),&(table[i][1]),&(table[i][2]));
}
int test[100][3];
int r,g,b;
int m=0;
while(1){
scanf("%d%d%d",&r,&g,&b);
if(r==-1 && g==-1 && b==-1)break;
long long min = LONG_LONG_MAX;
for(int i=0;i<n;++i){
int dist =
pow(r-table[i][0],2)+
pow(g-table[i][1],2)+
pow(b-table[i][2],2);
if(dist < min){
min = dist;
test[m][0] = table[i][0];
test[m][1] = table[i][1];
test[m][2] = table[i][2];
}
}
++m;
}
for(int i=0;i<m;++i){
printf("(%d,%d,%d)\n",test[i][0],test[i][1],test[i][2]);
}
return 0;
}
- 1916 购物 注意处理Z大于180的情况。
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#define M_PI 3.1415926
int main() {
int n;
scanf("%d",&n);
int data[n][3];
for(int i=0;i<n;++i){
scanf("%d%d%d",
&data[i][0],&data[i][1],&data[i][2]);
}
for(int i=0;i<n;++i){
printf(data[i][1]*5 >= 2*2*M_PI*data[i][0]*(data[i][2]>180?360-data[i][2]:data[i][2])/360?"Yes\n":"No\n");
}
return 0;
}
- 1957 幼儿园霸王
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
char maxName[8];
char minName[8];
int maxValue = INT_MIN;
int minValue = INT_MAX;
int l,w,h;
char name[8];
while(n--){
scanf("%d%d%d%s\n",&l,&w,&h,&name);
int value = l*w*h;
if(value > maxValue){
maxValue = value;
strcpy(maxName,name);
}
if(value < minValue){
minValue = value;
strcpy(minName,name);
}
}
printf("%s %s",maxName,minName);
return 0;
}
数组+函数
- 1917 吃葡萄 函数模拟+数组预存数据
#include <stdio.h>
#include <stdbool.h>
int eatGraph(int n){
for(int i=n;i>1;--i){
// 人数i从n到2进行判断
int t = n; // 保存葡萄数
bool ok = true; // 假设能够完美分配
for(int j=0;j<i;++j){
// 模拟i人分葡萄
int s = t-1; // 先吃掉1颗
if(s%i!=0) {
// 判断能否按人数平均分配
ok = false; // 不能成功分配
break;
}else{
t = s - s/i; // 计算剩余葡萄数
}
}
if(ok && t%i == 0){
// 剩余的最后平分
return i;
}
}
return -1;// 没有满足的情况
}
int main(){
int n;
scanf("%d",&n);
int nums[n];
for(int i=0;i<n;++i){
//scanf("%d",&nums[i]);
scanf("%d",nums+i);
}
for(int i=0;i<n;++i){
int m = eatGraph(nums[i]);
if(-1 != m){
printf("%d\n",m);
}else{
printf("No Solution\n");
}
}
}
- 1888 可以编码 数组预存数据+字符串查找
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d",&n);
char d[n][10];
for(int i=0;i<n;++i){
scanf("%s",&d[i]);
}
int ok = 1;
for(int i=0;i<n-1;++i){
for(int j=i+1;j<n;++j)
if(strlen(d[i]) < strlen(d[j])){
if(strstr(d[j],d[i]) == d[j]){
ok = 0;
break;
}
}else{
if(strstr(d[i],d[j]) == d[i]){
ok = 0;
break;
}
}
}
printf(ok?"Yes":"No");
return 0;
}
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/27424.html