天津自貿(mào)區(qū)建設(shè)局網(wǎng)站關(guān)鍵詞出價(jià)計(jì)算公式
💗 💗 博客:小怡同學(xué)
💗 💗 個(gè)人簡(jiǎn)介:編程小萌新
💗 💗 如果博客對(duì)大家有用的話,請(qǐng)點(diǎn)贊關(guān)注再收藏 🌞
文章目錄
- ??途W(wǎng)題號(hào): JZ17 打印從1到最大的n位數(shù)
- 牛客網(wǎng)題號(hào): HJ73 計(jì)算日期到天數(shù)轉(zhuǎn)換
- 牛客網(wǎng)題號(hào): HJ76 尼科徹斯定理
- ??途W(wǎng)題號(hào): HJ100 等差數(shù)列
- ??途W(wǎng)題號(hào): HJ97 記負(fù)均正
- leetcode 題號(hào):645. 錯(cuò)誤的集合
- 牛客網(wǎng)題號(hào): OR141 密碼檢查
- ??途W(wǎng)題號(hào): JZ53 數(shù)字在升序數(shù)組中出現(xiàn)的次數(shù)
- leetcode 題號(hào):面試題 05.06. 整數(shù)轉(zhuǎn)換
- leetcode 題號(hào):747. 至少是其他數(shù)字兩倍的最大數(shù)
- leetcode 題號(hào):349. 兩個(gè)數(shù)組的交集
- 牛客網(wǎng)題號(hào): HJ34 圖片整理
- leetcode 題號(hào):724. 尋找數(shù)組的中心下標(biāo)
- ??途W(wǎng)題號(hào): HJ10 字符個(gè)數(shù)統(tǒng)計(jì)
- leetcode 題號(hào):169. 多數(shù)元素
??途W(wǎng)題號(hào): JZ17 打印從1到最大的n位數(shù)
描述
輸入數(shù)字 n,按順序打印出從 1 到最大的 n 位十進(jìn)制數(shù)。比如輸入 3,則打印出 1、2、3 一直到最大的 3 位數(shù) 999。
- 用返回一個(gè)整數(shù)列表來(lái)代替打印
- n 為正整數(shù),0 < n <= 5
int* printNumbers(int n, int* returnSize ) {*returnSize = pow(10,n)-1;int* arr = (int*)malloc(sizeof(int) * *returnSize);//動(dòng)態(tài)申請(qǐng)擴(kuò)容,共是*returnSize * int 個(gè)字節(jié)for(int i = 0 ;i <*returnSize ; i++){arr[i] = i+1;} return arr;
}
??途W(wǎng)題號(hào): HJ73 計(jì)算日期到天數(shù)轉(zhuǎn)換
根據(jù)輸入的日期,計(jì)算是這一年的第幾天。
保證年份為4位數(shù)且日期合法。
#include <stdio.h>
int is_leap_year(int year)
{if(year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)){return 1;}
return 0;}
int main() {int month_day[]={0,31,28,31,30,31,30,31,31,30,31,30,31};int year,month,day;while (~scanf("%d %d %d", &year, &month,&day)) { int total_day = day;if(is_leap_year(year) && month > 2 )total_day +=1; //比二月大且是閏年加一天for(int i = month - 1 ; i > 0 ; i--)//i不等于0是因?yàn)閯?chuàng)建數(shù)組時(shí)month_day[0]==0{total_day += month_day[i];}printf("%d ",total_day);}return 0;
}
??途W(wǎng)題號(hào): HJ76 尼科徹斯定理
驗(yàn)證尼科徹斯定理,即:任何一個(gè)整數(shù)m的立方都可以寫(xiě)成m個(gè)連續(xù)奇數(shù)之和。
例如:
1^3=1
2^3=3+5
3^3=7+9+11
4^3=13+15+17+19
#include <stdio.h>
int main() {int a;while (scanf("%d", &a) != EOF) { int start = a * a - (a - 1);//有題意可知起始奇數(shù)公式為 m*m-(m-1)printf("%d",start);for(int i = 1 ; i < a ; i++){printf("+%d",start + 2 * i);} printf("\n");}return 0;
}
??途W(wǎng)題號(hào): HJ100 等差數(shù)列
等差數(shù)列 2,5,8,11,14。。。。
(從 2 開(kāi)始的 3 為公差的等差數(shù)列)
輸出求等差數(shù)列前n項(xiàng)和
#include <stdio.h>
int SUM(int a)
{return 2+(a-1)*3;
}int main() {int a=0;scanf("%d", &a);int sum = 0;for(int i = 0; i < a ; i++){sum +=SUM(i+1);}printf("%d",sum);return 0;
}
??途W(wǎng)題號(hào): HJ97 記負(fù)均正
描述
首先輸入要輸入的整數(shù)個(gè)數(shù)n,然后輸入n個(gè)整數(shù)。輸出為n個(gè)整數(shù)中負(fù)數(shù)的個(gè)數(shù),和所有正整數(shù)的平均值,結(jié)果保留一位小數(shù)。
0即不是正整數(shù),也不是負(fù)數(shù),不計(jì)入計(jì)算。如果沒(méi)有正數(shù),則平均值為0。
#include <stdio.h>int main() {int n = 0;scanf("%d",&n);int tmp =0;float sum = 0.0;int count_sum = 0;int count_num = 0;for(int i = 0 ; i < n ; i++)
{scanf("%d",&tmp);if(tmp > 0){sum += tmp;count_sum++; }else if(tmp < 0)count_num++;
}if(count_sum == 0)
printf("%d 0.0",count_num);
else
printf("%d %.1lf\n",count_num,sum/count_sum);return 0;
}
leetcode 題號(hào):645. 錯(cuò)誤的集合
集合 s 包含從 1 到 n 的整數(shù)。不幸的是,因?yàn)閿?shù)據(jù)錯(cuò)誤,導(dǎo)致集合里面某一個(gè)數(shù)字復(fù)制了成了集合里面的另外一個(gè)數(shù)字的值,導(dǎo)致集合 丟失了一個(gè)數(shù)字 并且 有一個(gè)數(shù)字重復(fù) 。
給定一個(gè)數(shù)組 nums 代表了集合 S 發(fā)生錯(cuò)誤后的結(jié)果。
請(qǐng)你找出重復(fù)出現(xiàn)的整數(shù),再找到丟失的整數(shù),將它們以數(shù)組的形式返回。
int* findErrorNums(int* nums, int numsSize, int* returnSize){*returnSize =2;int* ret = (int*)malloc(sizeof(int) * 2);int* arr = (int*)calloc(numsSize+1,sizeof(int));int sum = 0;int sum2 = 0;for(int i = 0;i<numsSize;i++){if(arr[nums[i]] == 1)ret[0] = nums[i];arr[nums[i]] = 1;sum += i+1;sum2 += nums[i];}ret[1] = sum - (sum2 - ret[0]);free(arr)return ret;
}
牛客網(wǎng)題號(hào): OR141 密碼檢查
小明同學(xué)最近開(kāi)發(fā)了一個(gè)網(wǎng)站,在用戶注冊(cè)賬戶的時(shí)候,需要設(shè)置賬戶的密碼,為了加強(qiáng)賬戶的安全性,小明對(duì)密碼強(qiáng)度有一定要求:
- 密碼只能由大寫(xiě)字母,小寫(xiě)字母,數(shù)字構(gòu)成;
- 密碼不能以數(shù)字開(kāi)頭;
- 密碼中至少出現(xiàn)大寫(xiě)字母,小寫(xiě)字母和數(shù)字這三種字符類型中的兩種;
- 密碼長(zhǎng)度至少為8
現(xiàn)在小明受到了n個(gè)密碼,他想請(qǐng)你寫(xiě)程序判斷這些密碼中哪些是合適的,哪些是不合法的。
int main() {//數(shù)組名不可以直接++,可以用一個(gè)指針指向數(shù)組名int n =0;scanf("%d" ,&n);for(int i = 0 ; i < n ; i++){int flag_num = 0;int flag_low = 0;int flag_cap = 0;int other = 0;char str [101]={0};char* cur =str;scanf("%s" ,str);if( *cur>= '0' && * cur <= '9' ){printf("NO\n");continue;}if(strlen(cur) < 8){printf("NO\n");continue;}while(*cur != '\0'){if(*cur >= 'A' && *cur <= 'Z' )flag_cap = 1;else if( *cur >= 'a' && *cur<= 'z')flag_low = 1;else if(*cur <= '9' && *cur >='0')flag_num = 1;elseother++;cur++; }if(other >0){printf("NO\n");continue;}if((flag_cap >0) + (flag_low>0) + (flag_num>0) >= 2)printf("YES\n");}return 0;
}
牛客網(wǎng)題號(hào): JZ53 數(shù)字在升序數(shù)組中出現(xiàn)的次數(shù)
整數(shù)轉(zhuǎn)換。編寫(xiě)一個(gè)函數(shù),確定需要改變幾個(gè)位才能將整數(shù)A轉(zhuǎn)成整數(shù)B
int get_bin_cout(int num)
{int count = 0;for(int i =0 ; i < 32 ;i++)//4個(gè)字節(jié)32個(gè)比特位{if((num >> i) & 1)//&的作用是 (0 ,1) & 0 == 0 1 & 1 == 1count++;}return count;
}
int convertInteger(int A, int B){return get_bin_cout(A^B);//^的作用是相同為0相異為一
}
leetcode 題號(hào):面試題 05.06. 整數(shù)轉(zhuǎn)換
整數(shù)轉(zhuǎn)換。編寫(xiě)一個(gè)函數(shù),確定需要改變幾個(gè)位才能將整數(shù)A轉(zhuǎn)成整數(shù)B
int get_bin_cout(int num)
{int count = 0;for(int i =0 ; i < 32 ;i++){if((num >> i) & 1)count++;}return count;
}
int convertInteger(int A, int B){return get_bin_cout(A^B);
}
leetcode 題號(hào):747. 至少是其他數(shù)字兩倍的最大數(shù)
給你一個(gè)整數(shù)數(shù)組 nums ,其中總是存在 唯一的 一個(gè)最大整數(shù) 。
請(qǐng)你找出數(shù)組中的最大元素并檢查它是否 至少是數(shù)組中每個(gè)其他數(shù)字的兩倍 。如果是,則返回 最大元素的下標(biāo) ,否則返回 -1
int dominantIndex(int* nums, int numsSize){int max_1 =0;
int max_2 =0;
if(nums[1] > nums[0])
{max_1 = 1;max_2 = 0;
}
else{max_1 = 0;max_2 = 1;
}for(int i = 2 ; i < numsSize ; i++)
{if(nums[i] > nums[max_1]){max_2 = max_1;max_1 = i;}else{if(nums[max_2] < nums[i])max_2 = i;}
}
int cur = nums[max_2] * 2;
if(cur <= nums[max_1])
return max_1;
else
return -1;
}
leetcode 題號(hào):349. 兩個(gè)數(shù)組的交集
給定兩個(gè)數(shù)組 nums1 和 nums2 ,返回 它們的交集 。輸出結(jié)果中的每個(gè)元素一定是 唯一 的。我們可以 不考慮輸出結(jié)果的順序 。
int* intersection(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize){*returnSize = 0;
static int arr[1000];
int i=0;
int j =0;
int n=0;
for(i = 0 ; i< nums1Size ;i++)
{for( j = 0 ; j < nums2Size ; j++){if(nums1[i] == nums2[j])//判斷兩個(gè)數(shù)組中是否有相同元素break; }if( j == nums2Size)//遍歷一遍后是否存在continue;for( n =0 ; n < *returnSize ;n++){if(nums1[i] == arr[n])break;}if(n == *returnSize){arr[*returnSize] = nums1[i];*returnSize += 1;}
}
return arr;
}
牛客網(wǎng)題號(hào): HJ34 圖片整理
描述
Lily上課時(shí)使用字母數(shù)字圖片教小朋友們學(xué)習(xí)英語(yǔ)單詞,每次都需要把這些圖片按照大小(ASCII碼值從小到大)排列收好。請(qǐng)大家給Lily幫忙,通過(guò)代碼解決。
Lily使用的圖片使用字符"A"到"Z"、“a"到"z”、"0"到"9"表示
#include <stdio.h>
#include <string.h>
int main() {//冒泡排序char arr[1000] = {0};scanf("%s",arr);int len = strlen(arr);for(int i = 0 ; i < len-1;i++){for(int j = 0 ; j < len -1-i ; j++){if(arr[j] > arr[j+1]){char kmp = arr[j+1];arr[j+1] = arr[j];arr[j] = kmp;}}}printf("%s",arr);return 0;
}
leetcode 題號(hào):724. 尋找數(shù)組的中心下標(biāo)
編寫(xiě)一個(gè)函數(shù),計(jì)算字符串中含有的不同字符的個(gè)數(shù)。字符在 ASCII 碼范圍內(nèi)( 0~127 ,包括 0 和 127 ),換行表示結(jié)束符,不算在字符里。不在范圍內(nèi)的不作統(tǒng)計(jì)。多個(gè)相同的字符只計(jì)算一次
例如,對(duì)于字符串 abaca 而言,有 a、b、c 三種不同的字符,因此輸出 3 。
int pivotIndex(int* nums, int numsSize){//兩次循環(huán),外層循環(huán)找下標(biāo),內(nèi)增循環(huán)總計(jì)左右之和for(int i =0 ; i < numsSize ;i++)
{int sum_l = 0;int sum_r = 0;for(int j = 0 ; j < numsSize ; j++){if(j < i){sum_l += nums[j];}else if(j > i){sum_r += nums[j];}}if(sum_l == sum_r)return i;
}
return -1;
}
牛客網(wǎng)題號(hào): HJ10 字符個(gè)數(shù)統(tǒng)計(jì)
描述
編寫(xiě)一個(gè)函數(shù),計(jì)算字符串中含有的不同字符的個(gè)數(shù)。字符在 ASCII 碼范圍內(nèi)( 0~127 ,包括 0 和 127 ),換行表示結(jié)束符,不算在字符里。不在范圍內(nèi)的不作統(tǒng)計(jì)。多個(gè)相同的字符只計(jì)算一次
例如,對(duì)于字符串 abaca 而言,有 a、b、c 三種不同的字符,因此輸出 3 。
#include <stdio.h>
#include <string.h>
int main() {char arr[500] ={0};scanf("%s",arr);char str [500] ={0};int len = strlen(arr);int count =0;for(int i = 0 ; i < len ;i++){if(str[arr[i]] == 0)//把重復(fù)的元素當(dāng)成下標(biāo),并標(biāo)志1{count++;}str[arr[i]] = 1;} printf("%d",count);return 0;
}
//寫(xiě)法二
#include <stdio.h>
#include <string.h>
int main() {char arr [501]={0};while(~scanf("%s",arr)){char str [500] ={0};char* cur =arr;//開(kāi)辟新的數(shù)組當(dāng)下標(biāo),并有一個(gè)指針來(lái)接收,因?yàn)閿?shù)組名不可以++;int count = 0;while(*cur != '\0'){if(str[*cur] != 1)//{count++;}str[*cur++] = 1;}printf("%d\n",count);}return 0;
}
leetcode 題號(hào):169. 多數(shù)元素
給定一個(gè)大小為 n 的數(shù)組 nums ,返回其中的多數(shù)元素。多數(shù)元素是指在數(shù)組中出現(xiàn)次數(shù) 大于 ? n/2 ? 的元素。
你可以假設(shè)數(shù)組是非空的,并且給定的數(shù)組總是存在多數(shù)元素。
int majorityElement(int* nums, int numsSize){int tmp = nums[0];
int count = 1;for(int i = 1 ; i < numsSize ; i++)
{if(nums[i] == tmp){count++;}else{count--;if(count == 0)tmp = nums[i+1];//相鄰判斷,tmp迭代之后count為1}
}
return tmp;
}