:D 正在获取一言...

纯c语言题解

P1001 A+B Problem

点击查看代码
#include<stdio.h>
int main(){
    int a,b,c;
    scanf("%d %d", &a, &b);
    c = a + b;
    printf("%d", c);
    return 0;
}
P1046 [NOIP 2005 普及组] 陶陶摘苹果
点击查看代码
#include<stdio.h>

int main(){
	int a[100000];
    int i;
	for(i=0;i<10;i++) {
        scanf("%d", &a[i]);
    }
	int n;
    scanf("%d", &n);
    n+=30;
    int ans=0;
	for(i=0;i<10;i++){
		if(a[i]<=n) ans++;
	}
    printf("%d", ans);
	return 0;
}


P3954 [NOIP 2017 普及组] 成绩
点击查看代码
#include<stdio.h>

int main(){
	long a,b,c,d;
	scanf("%ld %ld %ld", &b, &c, &d);
	b=b*0.2;
	c=c*0.3;
	d=d*0.5;
	a=b+c+d;
	printf("%ld", a);
	return 0;	
}
P5711 【深基3.例3】闰年判断
点击查看代码
#include <stdio.h>

void solve() {
    int n;
    scanf("%d", &n);
    if ( (n % 4 == 0 && n % 100 != 0) || n % 400 == 0) {
        printf("1");
    } else {
        printf("0");
    }
}

int main() {
    int t=1;
    //scanf("%d", &t);
    while (t--) {
        solve();
    }
    return 0;
}

//主要代码在void solve里面,就看这个就可以了

P1089 津津的储蓄计划
点击查看代码
#include<stdio.h>
int c,s=0,h=0;
int main(){                  
        int i;
        for(i=1;i<=12;i++){         
                scanf("%d",&c); 
                s-=c-300;   
                if(s<0){
                        printf("-%d",i);
                        return 0; 
                }
                else {
                    h+=s/100;
                    s%=100;
                }
        }
    printf("%d",120*h+s);             
    return 0;
}
P5718 【深基4.例2】找最小值
点击查看代码
#include <stdio.h>

void solve() {
   int n;
   scanf("%d", &n);
   int minn = 2147483647; // int类型的最大值
   int i;
   for(i = 1; i <= n; i++){
    int x;
    scanf("%d", &x);
    if(x < minn){
        minn = x;
    }
   }
   printf("%d", minn);
}

int main() {
    int t=1;
    //scanf("%d", &t);
    while (t--) {
        solve();
    }
    return 0;
}
P5726 【深基4.习9】打分
点击查看代码
#include <stdio.h>

void solve() {
    int n;
    scanf("%d", &n);
    int a[2000];
    int i, j;
    for(i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }
    
    // 冒泡排序
    for(i = 0; i < n - 1; i++) {
        for(j = 0; j < n - 1 - i; j++) {
            if(a[j] > a[j+1]) {
                int temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
            }
        }
    }

    double ans = 0;
    for(i = 1; i < n - 1; i++) {
        ans += a[i];
    }
    printf("%.2f", ans / (n - 2));

}
int main() {
    int t=1;
    //scanf("%d", &t);
    while (t--) {
        solve();
    }
    return 0;
}
P1308 [NOIP 2011 普及组] 统计单词数
点击查看代码
#include <stdio.h>
#include <string.h>

int main() {
    int ans = 0, pos = 0;
    char word[101];
    char s[1000002];
    char w[1000002] = {0}; // 当前正在构建的单词
    int w_idx = 0; // w 的索引
    int i;
    int ls;

    // 读入目标单词
    scanf("%s", word);
    getchar(); // 吸收掉 scanf 留下的换行符

    // 读入一整行句子
    fgets(s, sizeof(s), stdin);
    // fgets 会读入末尾的换行符,需要移除
    if (s[strlen(s) - 1] == '\n') {
        s[strlen(s) - 1] = '\0';
    }

    // 在句子末尾添加空格,以确保最后一个单词能被处理
    strcat(s, " ");

    // 将目标单词转为小写
    for (i = 0; i < strlen(word); i++) {
        if (word[i] >= 'A' && word[i] <= 'Z') {
            word[i] = word[i] + ('a' - 'A');
        }
    }

    // 将句子转为小写
    ls = strlen(s);
    for (i = 0; i < ls; i++) {
        if (s[i] >= 'A' && s[i] <= 'Z') {
            s[i] = s[i] + ('a' - 'A');
        }
    }

    // 遍历整个句子,提取并比较单词
    for (i = 0; i < ls; i++) {
        if (s[i] == ' ') {
            // 遇到空格,意味着一个单词结束
            w[w_idx] = '\0'; // C语言字符串以'\0'结尾

            // 检查 w 是否与 word 相同 (且w不能为空)
            if (w_idx > 0 && strcmp(w, word) == 0) {
                if (ans == 0) {
                    pos = i - strlen(word);
                }
                ans++;
            }
            
            // 重置 w,准备下一个单词
            w_idx = 0;
        } else {
            // 不是空格,则加入到当前单词 w 中
            w[w_idx] = s[i];
            w_idx++;
        }
    }

    // 输出最终结果
    if (ans == 0) {
        printf("-1\n");
    } else {
        printf("%d %d\n", ans, pos);
    }

    return 0;
}
P5733 【深基6.例1】自动修正
点击查看代码
#include <stdio.h>
#include <string.h>
#include <ctype.h>

void solve() {
   char str;
   scanf("%s", str);
   int i;
   for(i = 0; str[i] != '\0'; i++){
    if(islower(str[i])) {
        putchar(toupper(str[i]));
    } else {
        putchar(str[i]);
    }
   }
}

int main() {
    int t=1;
    //scanf("%d", &t);
    while (t--) {
        solve();
    }
    return 0;
}
P3156 【深基15.例1】询问学号
点击查看代码
#include <stdio.h>

void solve() {
    int n,m;
    scanf("%d %d", &n, &m);
    int a;
    int i;
    for(i = 1; i <= n; i++) {
        scanf("%d", &a[i]);
    }
    for(i = 1; i <= m; i++){
        int x;
        scanf("%d", &x);
        printf("%d\n", a[x]);
    }
}

int main() {
    int t=1;
    //scanf("%d", &t);
    while (t--) {
        solve();
    }
    return 0;
}
P3613 【深基15.例2】寄包柜
点击查看代码
//这题这种方法不推荐,数据大一点就容易爆内存,所以还是建议学c++的stl中的map解法就是我标准题解中的解法
#include<cstdio>
#include<map>
using namespace std;
int n,q,p,k;
map<long long,int>b;
long long i,j;
int main()
{
	scanf("%d%d",&n,&q);
	while(q--)
	{
		scanf("%d%d%d",&p,&i,&j);
		if(p==1)
		{
			scanf("%d",&k);
			b[i*1000000+j]=k;
		}
		else printf("%d\n",b[i*1000000+j]);
	}
	return 0;
}
P2670 [NOIP 2015 普及组] 扫雷游戏
点击查看代码
#include <stdio.h>

int dx = {-1, -1, -1, 0, 0, 1, 1, 1};
int dy = {-1, 0, 1, -1, 1, -1, 0, 1};
//八方搜索
char a;
char ans;

int inmap(int x, int y, int n, int m){
    return x >= 0 && x < n && y >= 0 && y < m;
};
//标准坐标在地图里面
void solve() {
    int n,m;
    scanf("%d %d", &n, &m);
    int i, j, k;
    for(i = 0; i < n; i++) {
        scanf("%s", a[i]);
    }
        
    for(i = 0; i < n; i++){
        for(j = 0; j < m; j++){
            if(a[i][j] == '*'){
                ans[i][j] = '*';
            } else {
                int cnt = 0; 
                for(k = 0; k < 8; k++){
                    int xx = dx[k] + i;
                    int yy = dy[k] + j;
                    if(inmap(xx, yy, n, m) && a[xx][yy] == '*'){
                        cnt++;  
                    }
                }
                ans[i][j] = '0' + cnt;
            }
        }
    }

    for(i = 0; i < n; i++){
        for(j = 0; j < m; j++){
            putchar(ans[i][j]);
        }
        putchar('\n');
    }
}

int main() {
    int t=1;
    //scanf("%d", &t);
    while (t--) {
        solve();
    }
    return 0;
}
posted @ 2025-08-30 15:13  呱唧呱唧呱呱呱  阅读(52)  评论(0)    收藏  举报